setImmediate vs. nextTick的区别

参考: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不会被消耗掉。事件

相关文章
相关标签/搜索