setImmediate()方法与process.nextTick()方法十分类似,都是将回调函数延迟执行。
但是两者之间其实是有细微差别的:
process.nextTick()中的回调函数执行的优先级要高于setImmediate()。这里的原因在于事件循环对观察者的检查是有先后顺序的,process.nextTick()属于idle观察者,setImmediate()属于check观察者。在每一个轮循环检查中,idle观察者先于I/O观察者,I/O观察者先于check观察者。
在具体实现上,process.nextTick()的回调函数保存在一个数组中,setImmediate()的结果则是保存在链表中。
在行为上,process.nextTick()在每轮循环中会将数组中的回调函数全部执行完,而setImmediate()在每轮循环中执行链表中的一个回调函数。
本文探讨了Node.js中process.nextTick与setImmediate两种异步回调机制的区别。process.nextTick优先级更高,在每轮事件循环中会执行其所有回调;而setImmediate则在检查阶段执行,每轮仅执行一个回调。
986

被折叠的 条评论
为什么被折叠?



