- process.nextTick()和setImmediate()在node.js中都是将回调函数延时执行。跟setTimeout(function(){}, 0);类似,但性能不一样,setTimeout定时器是采用红黑树,process.nextTick()是用数组,setImmediate()是用链表。
- 先看看process.nextTick()的代码
结果为:process.nextTick(function(){ console.log("延迟执行"); }); console.log("正常执行");
setImmediate()的代码为:
setImmediate(function(){ console.log("延迟执行"); }); console.log("正常执行");
结果为:两个结果一样,我们可以试试有什么不同,
process.nextTick(function(){ console.log("nextTick延迟") }); setImmediate(function(){ console.log("setImmediate延迟"); }); console.log("正常执行");
结果为:改变两个函数顺序结果还是一样。
所以nextTick()的回调函数执行的优先级要高于setImmediate();
process.nextTick()属于idle观察者,setImmediate()属于check观察者.在每一轮循环检查中,idle观察者先于I/O观察者,I/O观察者先于check观察者.
process.nextTick()在每轮循环中会将数组中的回调函数全部执行完.
而setImmediate()在每轮循环中执行链表中的一个回调函数.
node.js中的process.nextTick()和setImmediate()
最新推荐文章于 2024-06-20 11:52:23 发布