为什么在下面的代码中第二个foo()
没有被调用?
function foo() {
console.log("--- entering foo ---")
return new Promise(() => {
setTimeout(() => {
console.log("--- resolved ---")
}, 2000)
})
}
async function bar() {
await foo()
foo() // not called
}
bar()
为澄清我已经做过的一些试验:
foo()
foo()
foo()
await foo()
await foo()
foo() // not called
await foo()
await foo() // not called
答案 0 :(得分:6)
您在foo
中的承诺未得到解决,因此await foo()
陷入困境。在foo
中兑现您的诺言:
function foo() {
console.log("--- entering foo ---")
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log("--- resolved ---")
resolve()
}, 2000)
})
}
async function bar() {
await foo()
foo()
}
bar();