Nodejs之nextTick vs setImmediate

关于 process.nextTick 和 setImmediate 执行时机的问题: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // 加入两个nextTick()的回调函数 process.nextTick(function () { console.log(
CC-BY-SA-4.0

关于 process.nextTicksetImmediate 执行时机的问题:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
// 加入两个nextTick()的回调函数
process.nextTick(function () {
    console.log('nextTick延迟执行1');
});
process.nextTick(function () {
    console.log('nextTick延迟执行2');
});
// 加入两个setImmediate()的回调函数
setImmediate(function () {
    console.log('setImmediate延迟执行1');
    // 进入下次循环
    process.nextTick(function () {
        console.log('强势插入');
    });
});
setImmediate(function () {
    console.log('setImmediate延迟执行2');
});
console.log('正常执行');

《nodejs深入浅出》的3.4章中的代码执行结果如下:

正常执行
nextTick延迟执行1
nextTick延迟执行2
setImmediate延迟执行1
强势插入
setImmediate延迟执行2

参见

可能是因为node版本不同,我在本地的执行结果如下:

正常执行
nextTick延迟执行1
nextTick延迟执行2
setImmediate延迟执行1
setImmediate延迟执行2
强势插入
1
2
$ node -v
v10.15.0

nextTick vs setImmediate

stack-overflow

官方文档说明

更多文章

Comments