了解Node.js的process.nextTick()

121 阅读1分钟

Node.js process.nextTick函数以一种特殊的方式与事件循环互动

当你试图理解Node.js事件循环时,它的一个重要部分是process.nextTick()

每当事件循环进行一次完整的旅行,我们称它为tick。

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

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

事件循环正忙于处理当前的函数代码。

当这个操作结束时,JS引擎会运行该操作期间传递给nextTick 调用的所有函数。

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

调用setTimeout(() => {}, 0) ,将在下一个tick结束时执行该函数,比使用nextTick() 时要晚得多,因为后者会优先调用并在下一个tick开始前执行它。

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