node的nextTick和setImmediate执行顺序问题

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只会执行一个回调函数,不就和上述执行结果不一致了吗?

阅读 2.3k
1 个回答

check阶段发现有2个setImmediate的回调要执行,执行第一个setImmediate回调过程中产生了另一个nextTick,但我不管,我check阶段还没过,先执行完我的回调,等check阶段完成在末尾执行nextTick

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题