JavaScript事件循环中宏任务包括全局脚本、setTimeout/setInterval回调等,微任务包括Promise.then、queueMicrotask等;执行顺序为:一个宏任务→全部微任务→下一个宏任务。

JavaScript 是单线程语言,靠事件循环(Event Loop)协调同步任务、异步回调的执行顺序。宏任务(Macrotask)和微任务(Microtask)是事件循环中两类关键任务,它们的执行顺序决定了代码的实际运行时序。
宏任务有哪些
宏任务是事件循环一次“迭代”中执行的主要任务,每次只取一个执行。常见宏任务包括:
- 全局脚本(初始执行的代码)
- setTimeout 和 setInterval 的回调
- setImmediate(仅 Node.js)
- I/O 回调(Node.js 环境)
- UI 渲染(浏览器环境,如重绘、重排)
- postMessage、MessageChannel 消息处理
微任务有哪些
微任务在**当前宏任务结束之后、下一个宏任务开始之前**立即执行,且会清空整个微任务队列。常见微任务包括:
- Promise.then/catch/finally 的回调(注意:Promise 构造器内的执行是同步的)
- queueMicrotask() 注册的函数
- MutationObserver 的回调(DOM 变化监听)
- await 后续代码(本质是 Promise 微任务的语法糖)
执行顺序规则
事件循环按以下固定节奏运转:
立即学习“Java免费学习笔记(深入)”;
标签: javascript java js node.js node 浏览器 mac ai 重绘
还木有评论哦,快来抢沙发吧~