JavaScript事件循环按“执行一个宏任务→清空所有微任务→渲染→取下一个宏任务”顺序运行;宏任务包括script、setTimeout等,微任务包括Promise.then、queueMicrotask等,微任务优先级更高且本轮持续执行直至队列为空。

JavaScript 是单线程语言,靠事件循环(Event Loop)协调同步与异步任务的执行。所谓“队列”,其实指两个独立的队列:宏任务队列(Macrotask Queue)和微任务队列(Microtask Queue)。它们的执行顺序和优先级不同,直接影响代码输出结果。
宏任务有哪些?
宏任务是事件循环一次迭代中执行一个的任务,常见类型包括:
- script 整体代码(初始脚本)
- setTimeout 和 setInterval
- setImmediate(仅 Node.js)
- I/O 回调、UI 渲染(浏览器环境)、postMessage、MessageChannel
微任务有哪些?
微任务在当前宏任务结束后、下一个宏任务开始前**全部清空执行**,具有更高优先级。常见类型包括:
- Promise.then/catch/finally 的回调(已 resolve/reject 后注册的)
- queueMicrotask() 显式加入的微任务
- MutationObserver 回调
- async 函数中 await 后面的代码(本质是 Promise 微任务)
执行顺序怎么走?
事件循环每轮流程固定为:
立即学习“Java免费学习笔记(深入)”;
标签: javascript java js node.js node 浏览器 mac ai 异步任务
还木有评论哦,快来抢沙发吧~