node.js 中的event loop 每一次循环都要执行这6个阶段。每一个阶段都有本身的callback队列,每当进入某个阶段,都会从所属的队列中取出callback来执行,当队列为空或者被执行callback的数量达到系统的最大数量时候,进入下一阶段。这六个阶段都被执行完毕以后被称为一个循环。node
这一阶段的callback是按照超时时间的顺序来调用的,并非先进先出的队列逻辑socket
根据libuv的文档,一些应该在上一轮循环poll阶段执行的callback,由于某些缘由不能执行,就会被延迟到这一轮的循环的I/O callbacks 阶段执行。这个阶段执行的callbacks是上一轮残留的。oop
在这阶段使用了大量的宏(不作过多解释)cdn
执行I/O callbackblog
执行setImmediate的callback;队列
执行全部close事件的callbacks事件
文档中提到,process.nextTick()不属于上面的任何一个阶段,它在每一个阶段结束的时候都会运行。而且优先与其余microtask执行;文档
它在每一个阶段结束的时候都会运行。而且优先级低于process.nextTick()执行;it