setInterval和setTimeout中的时间间隔不正确

时间:2020-09-16 10:22:13

标签: javascript reactjs

我在ReactJS中构建了一个Pomodoro时钟,其中涉及使用setInterval(或setTimeout),但是当我运行它以遵循会话/中断模式时,我发现在我的手机时钟上进行了90分钟的会话,在我的Pomodoro应用中大约滞后了30分钟。也就是说,延迟了30分钟!

经过一番研究,我发现setInterval并没有完全按照您指定的时间间隔触发,并且它会根据CPU负载而漂移,并且这些漂移会累积很长的时间运行。

我遇到的这个问题的一种解决方案是使用Date.now()方法来解决递归setTimeout函数中的漂移的自调整计时器。

但是,在此过程中,我还知道,当Google chrome中的标签页处于非活动状态时,由于CPU中调度进程的方式,即使是自调整计时器也会漂移(不活动的标签可能并不意味着过程)。

这对我来说是个问题,因为我想在一个选项卡中运行Pomodoro时钟,然后在另一个选项卡上工作。

我的问题是:如何解决这个无效的浏览器标签问题,以便在JavaScript中创建准确的计时器?

0 个答案:

没有答案