发电机未评估承诺 [英] Generator not evaluating promises
本文介绍了发电机未评估承诺的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
为什么发电机在进入下一个收益率之前不等待异步prm承诺完成?
Why doesn't the generator wait for the asynchronous prm promise to complete before moving on to the next yield?
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
推荐答案
因为生成器(本身)不会等待任何东西。它只是发出 next()
调用的收益
的信息。您当然可以等待自己的循环,然后在得到保证时再次调用 next
。
Because a generator - on its own - doesn't wait for anything. It just emits what you were yield
ing from the next()
call. You could of course have your loop wait when before calling next
again when it gets a promise.
您是什么想到的是 async
/ await
。您要编写
What you are thinking of is async
/await
. You want to write
async function verify() {
try {
let prm = new Promise((resolve,reject) => {
resolve("abc");
})
let k = await prm
console.log(k)
console.log("1")
console.log("2")
console.log("3")
} catch (err) {
console.log("error")
}
}
var prm = verify();
这篇关于发电机未评估承诺的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文