setInterval计时器延时问题
计时器延时问题
js计时器
使用setTimeout、setInterval函数时,第二个参数的设置的时间间隔t是自该函数(setTimeout(f1,t)、setInterval(f1,t))被调用时起,经过t毫秒后,f1被加入UI任务队列,但不一定执行,尤其是在期间有其他任务执行时,所以可能会有时间延时。因此使用setInterval函数制作计时器时,会出现延时。
 注意:
javascript在遇到setInterval时足够机智,只有当任务队列中没有该定时器的实例时,才会将定时器代码添加到任务队列中。因此,定时器代码被添加到任务队列的最小时间间隔为指定的时间间隔,即至少需要经过指定的时间间隔interval,定时器才会被添加
setInterval(fun,interval)
- 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);
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号