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

时间:2016-08-10 08:29:04

标签: javascript node.js

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

浏览器收集此事件发生之前的信息,然后计算每1秒倒计时倒计时的时间,并预计当时钟达到0时,事件将被触发。

所以一个人正在使用setTimeout(Node.js)而另一个正在使用setInterval(浏览器)每秒计数(倒计时)。

我能确定吗?

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

我读过关于计时器是500毫秒到甚至1000毫秒的预防,这对我的需求来说很好,但是我从来没有听说过它们在我想要的那段时间里被使用了。

它们是否足够准确或我应该使用不同的解决方案?特别是在Node.js方面,它必须是最准确的。

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

1 个答案:

答案 0 :(得分:1)

计时器的准确性取决于"忙碌"事件循环是在超时时。

如果您想要类似的东西,那应该足够了:

Categories

如果您的事件循环在任何时间段内都处于阻塞状态,则会出现其他问题。

但如果您在倒计时中每秒抽样四次,那么我预计会产生很大的不准确性。

因此,您可能需要将两项活动(抽样和倒计时)分开,或手动维持经过的时间。

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