在什么情况下浏览器拒绝继续调用 setInterval 回调

under what circumstances do browsers refuse to continue calling setInterval callbacks?

本文关键字:调用 setInterval 回调 继续 拒绝 情况下 浏览器 在什么      更新时间:2023-09-26

我正在处理一个困难的错误,其中setInterval回调只被调用20或21次,然后再也不会被调用,即使我从未清除间隔。 (至少在Chrome中运行)

页面保持响应,因此回调不会陷入无限循环。

如果执行时间过长,浏览器是否决定停止调用 setInterval 回调? 例如,如果在 setInterval 回调中执行了一些昂贵的画布绘制?

不幸的是,这个问题中可能涉及的层太多(即 React、Redux、自定义 Redux 中间件、Canvas 绘图)无法在此处发布一个好的代码示例。 我问的是现代浏览器中setInterval的预期行为

编辑我想我可能会在 Chrome 中看到一个与 setInterval/setTimeout 内部画布绘制有关的错误。 我无法在火狐中重现。

从 setInterval 文档来看,唯一提到标准行为的"变体"似乎是:

从 Gecko 5.0(Firefox 5.0/Thunderbird 5.0/SeaMonkey 2.2)开始,在非活动选项卡中,间隔被限制为每秒触发不超过一次。