了解 process.nextTick()

当您尝试理解 Node.js 事件循环时,process.nextTick() 是其中一个重要的部分。每次事件循环完成一次循环,我们称之为一个 tick。

当我们将一个函数传递给 process.nextTick() 时,我们指示引擎在当前操作结束时调用此函数,在下一个事件循环 tick 开始之前。

process.nextTick(() => {
  // do something
});

事件循环正忙于处理当前函数代码。当此操作结束时,JS 引擎将运行在该操作期间传递给nextTick调用的所有函数。

这是我们告诉 JS 引擎异步处理函数(在当前函数之后)但尽快处理,而不是将其排队的方式。

调用setTimeout(() => {}, 0)将在下一个事件循环的末尾执行函数,比使用nextTick()(它优先考虑调用并在下一个事件循环开始之前执行)要晚得多。

当您想确保在下一个事件循环迭代中代码已执行时,请使用nextTick()

事件顺序示例

console.log('Hello => number 1');

setImmediate(() => {
  console.log('Running before the timeout => number 3');
});

setTimeout(() => {
  console.log('The timeout running last => number 4');
}, 0);

process.nextTick(() => {
  console.log('Running at next tick => number 2');
});

示例输出

Hello => number 1
Running at next tick => number 2
Running before the timeout => number 3
The timeout running last => number 4

实际输出可能因运行而异。

阅读时间
2 分钟阅读
贡献
编辑此页面
目录
  1. 事件顺序示例
  2. 示例输出