我正在测试setTimeout使用此测试的准确性。现在,我注意到(如预期的那样)setTimeout不是很准确,但是对于大多数设备而言,并不是十分不准确。现在,如果我在Chrome中运行测试,然后让其在后台标签页中运行(因此,切换到另一个标签页并在该标签页上浏览),返回测试并检查结果(如果测试完成),它们将发生很大的变化。超时似乎一直慢很多。在FF4或IE9中进行了测试,但这没有发生。
setTimeout
因此,Chrome似乎在没有焦点的选项卡中挂起或至少减慢了javascript的执行速度。在网上找不到太多关于该主题的信息。这意味着我们无法运行后台任务,例如,使用XHR调用定期检查服务器上的setInterval(setInterval如果时间不多,我怀疑会看到的相同行为,将会编写测试)。
setInterval
有人遇到过吗?是否有解决此暂停/变慢的方法?您将其称为错误,还是应该这样提交?
我最近问了这个,这是设计使然。当选项卡处于非活动状态时,最多每秒只能调用一次该函数。这是代码更改。
也许这会有所帮助:当标签在Chrome中处于非活动状态时,如何使setInterval也能正常工作?
TL; DR: 使用 Web Workers 。