我阅读了有关它们的说明,在输入/输出操作之前触发了process.nextTick,在I / O操作之后触发了setImmediate。我知道process.nextTick在所有异步动作之前触发,而setImmediate在其之后但在setTimeout之前和setInterval之前触发。有人可以解释并提供示例吗?在此解释中I/O操作是什么意思?

最佳答案

让我向您描述这是什么。

假设这是队列。在事件循环中有三个功能可以执行。

a , b , c


因此队列是FIFO,因此首先是第一个服务器,THat意味着a将先执行,然后b,然后c。
所以这两个功能就是这样做的。
当你使用

process.nextTick,当您运行此程序时,新进程将添加到事件循环中,而正在执行的新进程将立即添加到该事件循环中。

那意味着。

a , new_process , b , c


在这种情况下,new_process将在当前进程a从事件循环中退出后执行。然后b,c将执行。

和另一只手

setImmediate,运行此命令时,新进程将添加到队列末尾。像这样

a , b, c , new_process


所以现在当所有a,b,c完成时,new_process被执行。

10-06 14:17