微任务和宏任务哪个先执行

宏任务

先说一下事件循环:先执行宏任务,再检查有没有微任务,如果有就执行微任务,然后渲染dom,最后进入下一次事件循环。

为什么有人认为微任务先执行? 

     setTimeout(() => {
      console.log("宏任务");
    }, 0);
    Promise.resolve().then((e) => {
      console.log("微任务");
    });

因为上面的代码会先输出微任务,再输出宏任务

这是因为宏任务是下一个事件循环开始的宏任务,而微任务是这次事件循环就执行的微任务,他们之间隔了一个dom渲染。所以造成了微任务比宏任务更快执行的错觉。

posted @ 2022-05-07 10:06  怡红公子0526  阅读(1382)  评论(0编辑  收藏  举报