Event loop的macro task和micro task

macrotask在一些文章中也被直接称为task。

一个宿主环境只有一个事件循环,但可以有多个任务队列。宏任务队列(macro task)与微任务队列(micro task)就是其中之二。

每次事件循环的时候,微任务优先级高于宏任务。

宏任务:script(全局任务), setTimeout, setInterval, setImmediate, postMessage, MessageChannel, I/O, UI rendering.
微任务:process.nextTick, Promise, Object.observer, MutationObserver.

微任务总 process.nextTick > promise.then

宏任务中,通常 setTimeout > setImmediate

setImmediate(): 是被设计用来一旦当前阶段的任务执行完后执行。
setTimeout(): 是让代码延迟执行。

如果没有在一个I/O周期执行,那么其执行顺序是不确定的。
如果在一个I/O周期执行,setImmediate总是优先于setTimeout执行。


更多请查看Jake Archibald关于macroTask和microTask的说明
https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/

 

posted @   全玉  阅读(406)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示