[javascript]中央定时器控制

[学习链接]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;
    }
}

坚持,坚持,坚持。再坚持坚持!
原文地址:https://www.cnblogs.com/danker/p/12660544.html