參考:http://stackoverflow.com/questions/15349733/setimmediate-vs-nexttick 函數
setImmediate 在已在事件隊列的I/O事件觸發以後發生,process.nextTick在事件隊列以前,而且在當前函數結束以後發生。oop
所以,若是你打算打斷長運行、使用遞歸的cpu任務,你能夠使用setImmediate 而非process.nextTick來插入下一個迭代,不然任何I/O事件回調沒有任何機會在迭代過程當中被調用。遞歸
另外:隊列
傳遞到process.nextTick的回調函數一般在執行事件流的最後被調用,所以最適合用於儘量快的同步操做。若是未作檢查,這將會消耗掉event loop,阻止I/O發生。setImmediates則按建立順序插入隊列,而且在每一次迭代過程當中彈出。這與process.nextTick有很大不一樣,process.nextTick會在每一次迭代的時候執行process.maxTickDepth隊列回調函數。setImmediate在觸發隊列回調函數以後會讓步於event loop,以確保I/O不會被消耗掉。事件