process.nextTicksetImmediate的区别主要在于:process.nextTick在本次事件循环结束之后立即执行;而setImmediate在下次事件循环的I/O事件回调之后,setTimeoutsetInterval之前执行。

而它们之间的区别是与它们的设计意图相关的,process.nextTick主要用于确保函数始终异步,也就是行为一致性;而setImmediate主要用于分割耗时任务。而且它们的实现确保了尽可能高效地执行,这也是使用setTimeout同样可以实现这两个功能却不推荐使用的原因。

接下来,我们需要做的事就是按它们的设计意图使用它们。