Chrome:后台选项卡中暂停的超时/间隔?

新手上路,请多包涵

我正在使用 此测试测试 setTimeout 的准确性。现在我注意到(正如预期的那样) setTimeout 不是很准确,但对于大多数设备来说并不是非常不准确。现在,如果我在 Chrome 中运行测试并让它在后台选项卡中运行(因此,切换到另一个选项卡并在那里浏览),返回测试并检查结果(如果测试完成)它们会发生巨大变化。看起来超时的运行速度要慢得多。在 FF4 或 IE9 中测试没有发生这种情况。

所以看起来 Chrome 在没有焦点的选项卡中暂停或至少减慢了 javascript 的执行。在互联网上找不到太多关于该主题的信息。这意味着我们无法运行后台任务,例如使用 XHR 调用和 setInterval 在服务器上定期检查(我怀疑 setInterval 会看到相同的行为,将写入测试我是否有时间)。

有没有人遇到过这个?这种暂停/减速会有解决方法吗?你会称之为错误吗?我应该这样归档吗?

原文由 KooiInc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

有一个使用 Web Workers 的解决方案,因为它们在单独的进程中运行并且不会减慢

我写了一个小脚本,可以在不更改代码的情况下使用 - 它只是覆盖函数 setTimeout、clearTimeout、setInterval、clearInterval

只需在所有代码之前包含它

http://github.com/turuslan/HackTimer

原文由 Ruslan Tushov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题