js中央定时器控制
1、使用定时器时可能出现的是出现大批量的定时器管理,管理多个定时器会出现很多的问题,而且迟早还必须干掉他们,可能还会干扰浏览器的正常运
行。
2、同时创建大量的定时器,会增加浏览器垃圾回收任务的可能性,定时器是个特殊的问题,多个定时器在不同浏览器之间表现不尽相同,有的浏览器因
此导致垃圾回收周期变长;就会出现一个动画在A浏览器很流畅,在B浏览器很卡顿情况,减少同时使用定时器的数量,将有助于解决这类问题。
在多个定时器中使用中央定时器控制,可以带来很多优势:
- 每个页面同一时间只需要一个定时器
- 可以根据需要暂停和恢复定时器
- 删除回调函数很简单
代码块
中央定时器代码示例:
var timers = {
timerID : 0,
timers : [],
add : function (fn) {
this.timers.push(fn);
},
start : function (){
if(this.timerID) return;
(function runNext(){
if(timers.timers.length>0){
for(var i=0;i<timers.timers.length;i++){
if(timers.timers[i]() === false){
timers.timers.splice(i,1);
i--;
}
}
timers.timerID = setTimeout(runNext,10);
}
})();
},
stop : function(){
clearTimeout(this.timerID);
this.timerID = 0;
}
};
我们可以在timers中添加任意数量定时器回调函数,而且可以控制该结构的启动与暂停。在任何时候callback返回了false,都允许将他删除。
代码很简单就不分开细说了。
简单使用
var count = 1;
timers.add(function(){
count++;
if(count == 100){
return false;
}
});
timers.start();