gpt4 book ai didi

javascript - Node.js 和浏览器中的 setTimeout/setInterval 有多准确?

转载 作者:行者123 更新时间:2023-12-02 14:18:20 26 4
gpt4 key购买 nike

我在 Node.js 中设置了一个计时器,等待 3 小时以发出事件,一旦到达该时间,它就会向所有正在监听的浏览器发出该事件。

浏览器会在事件发生之前收集该事件的信息,然后计算每 1 秒倒计时的剩余时间,并期望当时钟达到 0 时该事件将被触发。

因此,一种是使用 setTimeout (Node.js),另一种是使用 setInterval(浏览器)每秒计数(倒计时)。

我能确定吗?

  • 当倒计时达到 0 时,事件将被触发,误差范围约为 1 到 2 秒。 (浏览器)。
  • Node.js setTimeout 足够准确,调用时误差范围小于 1 秒。

我读过关于定时器的时间为 500 毫秒甚至 1000 毫秒,这对我的需求来说很好,但我从未听说过它们像我想要的那样被使用了这么长时间。

它们足够准确还是我应该使用不同的解决方案?尤其是在 Node.js 方面,它必须是其中最准确的。

  • 替代方案是在 Node.js 中设置一个每秒运行大约 4 次的间隔,计算日期毫秒数,并检查是否有需要从事件列表中调用的事件。
  • 在浏览器中设置时间间隔,以便它在每次回调时计算日期毫秒,以尽量保持时间同步。

最佳答案

计时器的准确性将取决于超时时事件循环的“繁忙”程度。

如果你想要这样的东西,它应该足够好了:

setTimeout(done, THREE_HOURS_IN_MS);

如果您的事件循环阻塞了任意时间,您还会遇到其他问题。

但是,如果您每秒采样四次作为倒计时的一部分,那么我预计会产生很大的不准确性。

因此您可能需要将两个事件(采样和倒计时)分开,或者手动维护耗时。

请注意,当您的网络应用程序没有焦点时,计时器的准确性会降低。

关于javascript - Node.js 和浏览器中的 setTimeout/setInterval 有多准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38868023/

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