[学习链接]https://www.jianshu.com/p/600804b1486b
为何需要中央定时器
在使用定时器时,可能出现大量的定时器需要管理的情况。(比如,处理动画)
同时创建大量的定时器,将会在浏览器中增加垃圾回收任务的可能性。
在多个定时器中使用中央定时器,可以带来很大的威力和灵活性。
中央定时器控制特点
- 每个页面在同一时间只需要运行一个定时器
- 可以根据需要暂停和恢复定时器
- 删除回调函数的过程变得很简单
实现代码:
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, 0);
}
})();
},
stop: function() {//创建停止定时器的函数
clearTimeout(this.timerID);
this.timerID = 0;
}
}