如果我没记错的话:
async function foo() {
await bar();
baz();
}
对应:
function foo() {
return new Promise((resolve) => {
resolve(bar());
}).then(() => {
baz();
});
}
所以 () => baz();进入微任务队列。
但是,如果我们在异步函数内有 try/catch 块,那么微任务队列会发生什么,例如:
async function foo() {
try {
await bar();
} catch () {
baz();
}
qux();
}
await 之后的代码进入微任务以及 catch 块。