巨集任務
先說一下事件迴圈:先執行巨集任務,再檢查有沒有微任務,如果有就執行微任務,然後渲染dom,最後進入下一次事件迴圈。
為什麼有人認為微任務先執行?
setTimeout(() => {
console.log("巨集任務");
}, 0);
Promise.resolve().then((e) => {
console.log("微任務");
});
因為上面的程式碼會先輸出微任務
,再輸出巨集任務
,
這是因為巨集任務是下一個事件迴圈開始的巨集任務,而微任務是這次事件迴圈就執行的微任務,他們之間隔了一個dom渲染。所以造成了微任務比巨集任務更快執行的錯覺。