我正在Tizen开发一个计时器应用程序,我目前正在使用 setInterval 函数来安排下次带有数字的文本将被更新:
chrono : function() {
SecondsChrono += 1;
},
setInterval(chrono(), 1000);
但是当设备的屏幕进入“睡眠模式”时,计时器会延迟。 我想知道是否有人经历过这个,如果你有办法避免它,或者你有任何建议我以另一种方式实现这个天文台。
答案 0 :(得分:1)
你应该只使用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回调链接在一起,这可以冻结用户浏览器。有关详细信息,请参阅this。