宏任务
先说一下事件循环:先执行宏任务,再检查有没有微任务,如果有就执行微任务,然后渲染dom,最后进入下一次事件循环。
为什么有人认为微任务先执行?
setTimeout(() => { console.log("宏任务"); }, 0); Promise.resolve().then((e) => { console.log("微任务"); });
因为上面的代码会先输出微任务
,再输出宏任务
,
这是因为宏任务是下一个事件循环开始的宏任务,而微任务是这次事件循环就执行的微任务,他们之间隔了一个dom渲染。所以造成了微任务比宏任务更快执行的错觉。