计时器延时问题
js计时器
使用setTimeout、setInterval函数时,第二个参数的设置的时间间隔t是自该函数(setTimeout(f1,t)、setInterval(f1,t))被调用时起,经过t毫秒后,f1被加入UI任务队列,但不一定执行,尤其是在期间有其他任务执行时,所以可能会有时间延时。因此使用setInterval函数制作计时器时,会出现延时。
var startTime = new Date().getTime();
var count = 0;
/*setInterval(function(){
var i = 0;
while(i++ < 100000000);
}, 0);*/
function fixed() {
count++;
var offset = new Date().getTime() - (startTime + count * 1000);
var nextTime = 1000 - offset;
if (nextTime < 0) nextTime = 0;
setTimeout(fixed, nextTime); //纠正延时
console.log(new Date().getTime() - (startTime + count * 1000));
}
setTimeout(fixed, 1000);
时间: 2024-11-05 14:43:32