js中央定时器控制

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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值