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() 。