【发布时间】:2021-07-10 01:50:28
【问题描述】:
下面代码的执行顺序是什么?
如果 await 让我们等待“promise”解决,但 resolve(...) 在 setTimeout 内,并且 setTimeout 仅在堆栈为空后才执行...我们如何不冻结在 await 上?当我们“等待”时,堆栈上还没有东西吗? await-y setTimeout 是否有一些例外,或者我不理解堆栈?
async function f() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("done!"), 1000)
});
let result = await promise; // wait until the promise resolves (*)
alert(result); // "done!"
}
f();
【问题讨论】:
标签: javascript asynchronous async-await stack queue