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