麻烦帮我看一下这个js事件循环?

console.log(1);

function foo(){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>resolve(),2000);
    })
}

foo().then(()=>{
    console.log(2);
})

queueMicrotask(() => {
   console.log(3);
});

为什么输出了 1 3 2

如果队列是先进先出的话 应该为按顺序执行 1 2 3
3会被2阻塞2秒

阅读 2k
2 个回答

foo中的宏任务执行的优先级比外层方法queueMicrotask低吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题