宏任务(Macro Task)和微任务(Micro Task)


🔹 概念通俗解释 宏任务:像是“大的工作任务”,要放到下一轮事件循环去执行。 👉 例子:setTimeout、setInterval、setImmediate(Node.js)、DOM 事件回调、I/O 操作。 微任务:像是“插队的小任务”,会在当前宏任务执行结束后,立刻执行,优先级比宏任务高。 👉 例子:Promise.then、MutationObser...

🔹 概念通俗解释

  • 宏任务:像是“大的工作任务”,要放到下一轮事件循环去执行。
    👉 例子:setTimeoutsetIntervalsetImmediate(Node.js)、DOM 事件回调、I/O 操作。

  • 微任务:像是“插队的小任务”,会在当前宏任务执行结束后,立刻执行,优先级比宏任务高。
    👉 例子:Promise.thenMutationObserverqueueMicrotask


🔹 生活类比

想象你在餐厅吃饭:

  • 宏任务:点一道大菜,需要厨师做完(比如红烧肉),等上下一轮上菜。
  • 微任务:点个小吃(比如花生米),厨师顺手就端上来,插队在大菜之间。

🔹 代码案例

console.log("1");

setTimeout(() => {
  console.log("2 宏任务");
}, 0);

Promise.resolve().then(() => {
  console.log("3 微任务");
});

console.log("4");

👉 输出顺序:

1
4
3 微任务
2 宏任务

🔍 为什么这样?

  1. console.log("1")console.log("4") —— 同步代码,先执行。
  2. Promise.then(...) —— 微任务,排到本轮宏任务的尾巴上,马上执行。
  3. setTimeout(...) —— 宏任务,要等到下一轮事件循环才执行。

🔹 关键总结

  • 执行顺序:同步任务 > 微任务 > 宏任务
  • 微任务的执行时机比宏任务更早(像是插队的小任务)。

如何做到时刻保持清醒

认识多巴胺

评 论
请登录后再评论