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

bal*_*ula 3 javascript node.js setimmediate

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

jfr*_*d00 7

setImmediate()当您想要推迟运行某些代码或调用某些回调,直到当前事件已完全处理并且控制权返回到事件循环之后,这非常有用。

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

  1. 您希望在运行某些代码之前有机会处理其他(已待处理)事件。

  2. 您想要调用回调,但希望异步调用它,以便后面的调用者代码在您调用回调之前运行。Nodejs 库中的某些地方这样做是为了保证回调始终被异步调用,即使结果是同步已知的。这为调用者创建了编程一致性,以便有时不会同步调用回调,有时会异步调用回调,这可能会导致微妙的错误。

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

将本文设置为易于阅读的setImmediate()setTimeout()和的摘要process.nextTick()

Node.js 中的调度执行 - setTimeout、setImmediate 和 process.nextTick 之间的差异。

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

套接字:确保异步分派写入

HTTP:确保在堆栈展开之前不会删除解析器

Express 仅在堆栈展开后才在层路由中调用回调

Express 在中止时调用sendFile()回调回调,仅在堆栈展开后