process.nextTick(() => {
console.log('nextTick执行');
});
setImmediate(() => {
console.log('setImmediate1执行');
process.nextTick(() => {
console.log('强势插入');
});
});
setImmediate(() => {
console.log('setImmediate2执行');
});
这段代码在node高版本的执行结果是:
nextTick执行
setImmediate1执行
setImmediate2执行
强势插入
在node深入浅出这本书中说process.nextTick()
的回调函数保存在一个数组中,每轮Tick会将数组中的所有回调函数全部执行完;setImmediate()
结果保存在链表中,每轮Tick只会执行一个回调函数,不就和上述执行结果不一致了吗?
check
阶段发现有2个setImmediate
的回调要执行,执行第一个setImmediate
回调过程中产生了另一个nextTick
,但我不管,我check
阶段还没过,先执行完我的回调,等check
阶段完成在末尾执行nextTick
。