没答上,我连生成器语法是啥都忘了.这种题一般需要讲到什么深度呢?
我的理解就是 async 能实现的 Generator 也全都能做到,只是 async 写起来更方便(顾名思义, 糖呗).😞
补一个 Generator 实现 async/ await
function prom() {
return new Promise((resolve) => {
setTimeout(() => {
resolve("success");
}, 1000);
});
}
function* gene() {
const num = yield 1;
console.log(num); // 1
const result = yield prom();
console.log(result); // success
}
function run(gene) {
let g = gene();
function next(value) {
let result = g.next(value);
return result.done
? result.value
: typeof result.value?.then === 'function'
? result.value.then((value) => next(value))
: Promise.resolve(result.value).then((value) => next(value))
}
next();
}
run(gene);
1
rabbbit OP 想了一下,无非就是:
1 什么是语法糖 2 async/await 是做什么的,怎么用 3 Generator 是做什么的,怎么用 4 如何用 Generator + Promise 实现 async/await 没啥可问的,沉了. |