Nodejs setImmediate() 函数实时用例和示例

Nodejs setImmediate() function Realtime usecase and example

有人可以解释一下 nodejs.I 中 setImmediate() 函数的实时用例吗?浏览了很多博客,但每个地方都给出了 console.log setImmediate 示例。

setImmediate() 当你想推迟 运行 一些代码或调用一些回调直到当前事件已经完全处理并且控制返回到事件循环之后。

您可能想要这样做的原因有很多:

  1. 您希望其他(已经挂起的)事件有机会在您 运行 一些代码之前得到处理。

  2. 您想调用一个回调,但您想异步调用它,以便在您调用回调之前,后面的调用者代码到达 运行。在 nodejs 库中有一些地方这样做是为了保证回调总是被异步调用,即使结果是同步已知的。这为调用者创建了编程一致性,因此回调不会有时被同步调用,有时被异步调用,这会导致细微的错误。

  3. 当您试图不阻塞事件循环太久时。您可以 运行 一段代码,然后在调用 setImmediate() 回调时调用 setImmediate() 和 运行 下一段代码,依此类推。这允许在您的处理块之间处理到达事件循环的其他事件。

将这篇文章设为 easy-to-read setImmediate()setTimeout()process.nextTick() 的摘要:

Scheduling Execution in Node.js - Differences between setTimeout, setImmediate, and process.nextTick.

以下是 nodejs 和 Express 源代码中的一些示例:

Socket: Ensure that write is dispatched asynchronously

HTTP: Make sure parser is not deleted until stack has unwound

Express calls callback in layer routing only after stack has unwound

Express calls callback sendFile() callback upon abort, only after stack has unwound