首页 > 关于process.nextTick和setImmediate区别的问题。

关于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
【热门文章】
【热门文章】