此问题在此处已有答案:
Does awaiting a non-Promise have any detectable effect?(3个答案)
昨天关门了。
我的理解是,await promise
表达式中的promise会被推送到微任务队列,所以它会在调用堆栈为空后解决。下面的代码按照我的预期工作:
async function func() {
console.log(await Promise.resolve('bagel'));
}
func();
console.log('synchronous log');
// Result:
// synchronous log
// bagel
但是如果我await
不是像这样的Promise,日志的顺序会改变:
async function func() {
await console.log('bagel');
}
func();
console.log('synchronous log');
// Result:
// bagel
// synchronous log
当我调用await
时,在幕后发生了什么?当等待一个非Promise时,执行的顺序是什么?特别是await console.log
?
1条答案
按热度按时间rekjcdws1#
在你的情况下
所以顺序很明显
万一
同步的也是第一个,因为
await
暂停函数执行如果你希望你的“同步”等待是同步的,你必须不等待它,如果它不是一个承诺