gpt4 book ai didi

node.js - `setTimeout` 和 `setImmediate` 之间的区别

转载 作者:搜寻专家 更新时间:2023-11-01 00:30:21 25 4
gpt4 key购买 nike

nodejs文档说

在 I/O 事件的回调之后和由 setTimeout 和 setInterval 设置的计时器被触发之前,安排“立即”执行回调。返回可能与 clearImmediate 一起使用的 immediateObject。

但是我写了一个测试代码如下:

server = http.createServer((req, res)->
res.end()
)

setImmediate(()->
console.log 'setImmediate'
)

setTimeout(()->
console.log 'setTimeout'
, 0)
process.nextTick(()->
console.log 'nextTick'
)

server.listen(8280, ()->
console.log 'i/o event'
)

为什么setTimeout总是在setImmediate之前输出

最佳答案

SetTimeOut - 这种类型的函数将在设置时间后调用,在您的情况下为 0,但它遵循事件循环。并且事件循环不保证它会在 0 秒后工作。实际上它只是保证在完成设置的时间后调用函数。

但是,当 Node 事件队列空闲占用回调函数时,可以在完成时间后随时调用函数

了解事件循环的来源 - https://www.youtube.com/watch?v=8aGhZQkoFbQ

SetImmediate - 这将在进入堆栈时调用,并且不遵循事件循环中的回调周期。

关于node.js - `setTimeout` 和 `setImmediate` 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37985065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com