是否按顺序调用process.nextTick的callback函数?

如果多次调用process.nextTick() ,是否按顺序执行callback?

换句话说,Node事件循环是否给所有对process.nextTick调用赋予相同的优先级,并按FIFO的顺序执行它们?

例如:

 process.nextTick(() => console.log('1')) process.nextTick(() => console.log('2')) process.nextTick(() => process.nextTick(() => console.log('3')) ) process.nextTick(() => process.nextTick(() => console.log('4')) ) 

这会不会打印1 2 3 4

什么样的队列正在使用没有写在文档中 ,我找不到解释它的官方来源,所以我看了一下源代码 ,看起来它是一个FIFO队列,正如你指出的那样。

检查每个nextTick()之后如何将回nextTickQueuenextTickQueue数组,以及如何在_tickCallback()中按顺序执行tickInfo[kIndex] ,在while循环的每次迭代中增加索引tickInfo[kIndex]

我想在你的例子中,第三个和第四个callback不会与第一个和第二个callback队列在同一时间, 但无论如何他们将按照这个顺序执行。

顺便说一句,即使是按预期方式执行的先入先出顺序,这也是一个无证的行为,所以不build议依靠它。 内部的东西可以随时改变。