node.js - 关于process.nextTick和setImmediate区别的问题。
迷茫
迷茫 2017-04-17 14:31:02
[Node.js讨论组]

在看深入浅出nodejs定时器的内容时,看到这样的一段代码

运行了一下,输出如下:


好像跟想象的不太一样??查了一下好像‘强势插入’应该在‘setImmediate延迟执行1’和‘setImmediate延迟执行2’之间输出才对。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(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
高洛峰

https://github.com/JacksonTia...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号