promise 用来执行异步任务。
通过链式调用可以一步接一步的执行任务,那么为什么还要结合生成器呢?
比如这样的:
new promise(...).then(val1 => {resolve(val2)}).then(val2 => resolve()).catch();
变成这样的:
function* xx() {
const val1 = yield new promise(...);
const val2 = yield new promise(...);
}
最终产生了 async?
变成这样:
async function xx() {
const val1 = await new promise(...);
const val2 = await new promise(...);
return
}
答案是用【同步写法】执行【异步任务】,这样看代码看的更清楚。而且使用了 async,还包括了自动执行,可以直接调用xx()来得到结果。