node.js - 关于process.nextTick和setImmediate区别的问题。
本文介绍了node.js - 关于process.nextTick和setImmediate区别的问题。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
在看深入浅出nodejs定时器的内容时,看到这样的一段代码
运行了一下,输出如下:
好像跟想象的不太一样??查了一下好像‘强势插入’应该在‘setImmediate延迟执行1’和‘setImmediate延迟执行2’之间输出才对。
解决方案
我的理解:
首先,process.nextTick 的优先级比 setImmediate 高。
其次,总是先按照优先级执行已存在的定时器方法,然后按照优先级执行异步回调中的定时器方法。
最后,异步回调藏的越深,优先级就要降一层。
测试代码:
process.nextTick(function(){
console.log('1');
});
process.nextTick(function(){
console.log('2');
});
setImmediate(function(){
console.log('3');
setImmediate(function() {
console.log('4');
process.nextTick(function(){
console.log('5');
process.nextTick(function(){
console.log('6');
});
});
});
process.nextTick(function(){
console.log('7');
});
});
process.nextTick(function(){
console.log('8');
});
setImmediate(function(){
console.log('9');
process.nextTick(function(){
console.log('10');
});
});
console.log('0');
验证输出:
0
1
2
8
3
9
7
10
4
5
6
这篇关于node.js - 关于process.nextTick和setImmediate区别的问题。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文