【问题标题】:Does Web Worker throttles setTimeout() / setInteval()?Web Worker 是否会限制 setTimeout() / setInterval()?
【发布时间】:2020-04-22 12:02:16
【问题描述】:

我在 foreground 选项卡上有一个启动(专用)网络工作者的脚本。现在我看到该网络工作者中的setTimeout(xxx, 100) 被限制为每秒触发一次,而不是根据需要每秒触发 10 次。我已经用谷歌搜索了非活动标签的这种限制,但是有没有任何文档对 Web Workers 有同样的看法?我已经在 Chrome 和 Firefox 中检查过了。

【问题讨论】:

  • 我能找到的唯一参考是HTML Standard"17。可选地,等待进一步的实现定义的时间长度。"
  • 里面做了什么任务?

标签: javascript settimeout setinterval web-worker


【解决方案1】:

尽管they do allow it:

  1. (可选)等待进一步的实现定义的时间长度。

这旨在允许用户代理根据需要填充超时以优化设备的电源使用。例如,某些处理器具有低功耗模式,其中定时器的粒度会降低;在此类平台上,用户代理可以减慢计时器以适应此计划,而不是要求处理器使用更精确的模式以及相关的更高功耗。

Chrome 从 2017 年开始有 this document,他们在其中公开了他们计划如何处理后台标签。

从那里我们可以看到plan section about Web Workers

限制网络工作者(~2018)

我们目前正在检测网络工作者,以更好地了解他们的 CPU 使用率和功率影响。我们也考虑限制网络工作者,考虑尽量减少损坏的内容。

所以这是计划在 2018 年,here is the issue tracking it's deployment

还应注意,目前正在积极讨论 WICG 以实施Page-Lifecycle API。此 API 将公开一些事件和一个新的“冻结”状态,我们感兴趣的也应该是 pause Workers' execution

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多