【发布时间】:2017-10-20 09:36:00
【问题描述】:
为什么生成器不等待异步 prm 承诺完成后再继续下一个产量?
function *verify() {
try {
let prm = new Promise((resolve,reject) => {
resolve("abc");
})
let k = yield prm
console.log(k)
yield 1;
console.log("1")
yield 2;
console.log("2")
yield 3;
console.log("3")
} catch (err) {
console.log("error")
}
}
var gen = verify()
while (!gen.next().done) {}
返回
undefined
1
2
3
【问题讨论】:
-
生成器不会等待承诺。您正在考虑异步生成器,目前尚不支持,但您可以使用 Babel 进行转译。
-
因为一个promise被认为是异步的,所以prm会被设置然后yield但它会任何时候解析,它不是阻塞的。