这可能与一个非常常见的问题相反:当您在一个选项卡上使用 setInterval
并切换到另一个选项卡时,间隔会显着减少(即变慢)。这对于音频计时非常明显,因为您可以听到它正在放慢速度。
但在最新的 Chrome 56 和 Firefox 51 上,我无法再实现它了。
但是在 Chrome 上,切换标签页可能会产生影响,但这种情况很少发生,而且似乎是随机发生的。出于某种原因,它甚至会限制 Web Worker。
这让我很头疼,因为我正在尝试编写一些需要非常精确计时的 Web Audio API 内容,而且我什至看不出 setInterval 和 Web Workers 之间的区别,后者应该在自己的线程上运行。
为什么 setInterval
不像以前那样限制不活动的标签页?
更新:即使是通过 Blob URI 加载的 Web Worker 中的 setInterval
,在某些情况下也会受到限制,例如切换标签页。
最佳答案
由于javascript是运行时编译代码(由浏览器在运行时编译,浏览器必须对其进行处理)。当您导航到其他选项卡时,该页面有自己的脚本,浏览器也必须编译该代码。因此,浏览器为事件选项卡中的脚本分配高优先级,而剩余选项卡中的脚本分配的优先级较低。所以它会影响非事件选项卡上的脚本。但是,如果您的机器有更多可用 RAM,则不会发生此问题。
关于javascript - setInterval 不会在非事件选项卡上减慢速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42151856/