理解 process.nextTick()
当您尝试理解 Node.js 事件循环时,其中一个重要的部分是 process.nextTick()
。 每次运行时回调到 JavaScript 事件时,我们都将其称为一个 tick。
当我们传递一个函数给 process.nextTick()
,我们指示引擎在当前操作完成后立即调用此函数,然后在事件循环中移动到下一个阶段
process.nextTick(() => {
// do something
});
事件循环正忙于处理当前函数代码。 当此操作结束时,JS 引擎运行在该操作期间传递给 nextTick
调用的所有函数。
这是我们可以告诉 JS 引擎异步处理函数(在当前函数之后)的方式,但要尽快处理,而不是将其排队。
调用 setTimeout(() => {}, 0)
将在下一个 tick 结束时执行该函数,比使用 nextTick()
晚得多,后者优先处理该调用并在下一个 tick 开始之前执行它。
当您想确保在下一个事件循环迭代中已经执行该代码时,请使用 nextTick()
。
要了解有关执行顺序以及事件循环如何工作的更多信息,请查看专门的文章