我正在使用 此测试测试 setTimeout
的准确性。现在我注意到(正如预期的那样) setTimeout
不是很准确,但对于大多数设备来说并不是非常不准确。现在,如果我在 Chrome 中运行测试并让它在后台选项卡中运行(因此,切换到另一个选项卡并在那里浏览),返回测试并检查结果(如果测试完成)它们会发生巨大变化。看起来超时的运行速度要慢得多。在 FF4 或 IE9 中测试没有发生这种情况。
所以看起来 Chrome 在没有焦点的选项卡中暂停或至少减慢了 javascript 的执行。在互联网上找不到太多关于该主题的信息。这意味着我们无法运行后台任务,例如使用 XHR 调用和 setInterval
在服务器上定期检查(我怀疑 setInterval
会看到相同的行为,将写入测试我是否有时间)。
有没有人遇到过这个?这种暂停/减速会有解决方法吗?你会称之为错误吗?我应该这样归档吗?
原文由 KooiInc 发布,翻译遵循 CC BY-SA 4.0 许可协议
我最近问过这个,这是设计行为。 When a tab is inactive, only at a maximum of once per second the function is called.这是 代码更改。
也许这会有所帮助: How can I make setInterval also work when a tab is inactive in Chrome?
TL;DR: 使用 网络工作者。