为什么这段js代码执行时1先于4打印?

问题描述 投票:0回答:1
async function check() {
  await Promise.resolve(console.log(1));
  console.log(2);
}
console.log(3);
check();
console.log(4);

答案是3,1,4,2

据我所知,异步函数将转到 Web API 进行解析,主程序将首先执行,所以我想 输出将为 3, 4 , 1 , 2 但这是错误的。

任何人都可以从事件循环和微任务队列方面解释一下正确答案是如何执行的。

javascript execution event-loop task-queue
1个回答
0
投票

事件循环首先运行同步代码,然后运行异步代码。因此,如果您将函数更改为

await Promise.resolve().then(() => console.log(1))
那么输出将为 3,4,1,2

© www.soinside.com 2019 - 2024. All rights reserved.