您的位置:首页 > Web前端 > Node.js

node.js中的process.nextTick()和setImmediate()

2015-07-23 15:41 896 查看
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 延时