屏幕休眠时的JavaScript setInterval延迟

JavaScript setInterval delay when screen sleeps

本文关键字:setInterval 延迟 JavaScript 休眠 屏幕      更新时间:2023-09-26

我正在Tizen开发一个计时器应用程序,目前我正在使用setInterval功能来安排下一次更新带有数字的文本:

   chrono : function() {
       SecondsChrono += 1;
   },
   setInterval(chrono(), 1000);

但当设备的屏幕处于"睡眠模式"时,计时器就会延迟。我想知道是否有人经历过这种情况,你是否有办法避免这种情况,或者你是否有任何建议让我用另一种方式实现这种计时器。

您应该只使用setInterval来更新屏幕,要查看自计时器首次启动以来已经过了多少时间,您应该执行以下操作:

var SCREEN_UPDATE_REFRESH_RATE= 1000;
var startTime= (new Date()).getTime();
var updateScreen= function() {
    var currentTime= (new Date()).getTime();
    var timeEllapsed = currentTime - startTime; //this value is in milliseconds
    document.write("Ellapesed time in seconds: " timeEllapsed / 1000);
    setTimeout(updateScreen, SCREEN_UPDATE_REFRESH_RATE);
}
updateScreen();

在这种情况下,使用setTimeout比使用setInterval更好。两者的区别在于,setInterval计划函数每X毫秒永远执行一次,而setTimeout计划执行一次,然后再也不执行,在这种情况下,函数会设置一个新的超时,使更新过程永远保持下去。如果用户系统过载,则可以将各种setInterval回调链接在一起,从而冻结用户浏览器。有关详细信息,请参阅此。