1. nodejs的宏任务回调有6个阶段:
timers setTimeout setInterval
IO fs.read, fs.write, network
idle prepare 准备工作,node内部使用
poll 新加入的IO事件
check setImmediate回调
close close事件的回调,例如 socket.on(‘close‘, ...)
2. nodejs的宏任务和微任务
宏任务队列有4个:
1. timers Queue
2. IO Queue
3. check Queue
4. close Queue
微任务队列有2个:
1. nextTick Queue process.nextTick
2. other Micro Queue Promise等
3. nodejs的Event loop过程
1. 执行全局script同步代码
2. 执行微任务,nextTick Queue,再次other Micro Queue,直至清空
3. 宏任务与微任务交替执行
老版本Node 宏任务每个阶段与微任务交替执行,timers Queue -> 微任务 -> IO Queue -> 微任务 -> check Queue -> 微任务 -> close Queue -> 微任务 -> ...
新版本Node 宏任务一个 -> 微任务 -> 宏任务一个 -> 微任务 -> ...
因此,process.nextTick在每个宏任务前都能优先执行。
原文:https://www.cnblogs.com/mengff/p/12780671.html