[英]How accurate is setTimeout/setInterval in Node.js and the browser?
我在Node.js中设置了一个计时器,该计时器等待3个小时来发出事件,一旦到达该时间,它将向所有正在监听的浏览器发出事件。
浏览器会在此类事件发生之前收集有关该事件的信息,然后计算每1秒滴答倒计时所需的剩余时间,并期望在时钟达到0时触发该事件。
所以一种使用setTimeout
(Node.js),另一种使用setInterval
(浏览器)每秒计数(倒数)。
我可以确定吗?
setTimeout
足够准确,可以在不到1秒的错误范围内被调用。 我已经听说过500ms到1000ms的计时器是不准确的,这对于我的需求是很好的,但是我从未听说过它们会被使用这么长时间。
它们是否足够准确,还是我应该使用其他解决方案? 特别是在Node.js方面,它必须是所有这些中最准确的。
计时器的精度将取决于事件循环在超时时的“繁忙”程度。
如果您想要这样的话就足够了:
setTimeout(done, THREE_HOURS_IN_MS);
如果事件循环在任何时间段都受阻,则您还有其他问题。
但是,如果您在倒计时的过程中每秒采样四次,那么我预计会产生很大的误差。
因此,您可能需要将两个活动(采样和倒数)保持分开,或者手动维护经过的时间。
请注意,当您的Web应用程序没有焦点时,计时器的准确性就会降低。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.