简介
async 原理学习笔记。
async 是什么
1、内置执行器。
2、更好的语义。
3、更广的适用性。
4、返回值是 Promise。
/** async 函数的实现原理: 返回一个函数, 此函数将 Generator 函数作为参数,内置自动执行器 */
async function fn(args) {
//...
}
/** 其中的 autoExecuter 函数就是自动执行器。等价于 */
function fn(args) {
return autoExecuter(
function* genFuc() {
//...
}
);
}
spawn 函数实现
const autoExecuter = function(genFuc) {
return new Promise(function(resolve, reject) {
const run = function () {
let gen = genFuc();
const cycle = function (data) {
const r = gen.next(data);
if (r.done) resolve(r.value);
else Promise.resolve(r.value).then(data => cycle(data), error => gen.throw(error));
}
cycle();
}
run();
});
}