重视函数节流

目地:让代码在间断的情况下连续重复执行,实现的方法是通过定时器对函数节流

var Processor={
   timeoutId:null,
  performProcessing:function()
   {
 //真正要处理的逻辑
     },
    process:function(){
        clearTimeout(this.timeId);//清除上次的定时器
        var that=this;
        //设置新的定时器
        this.timeId=setTimeout(function()
         {
           that.performProcessing();//之所以用that是因为setTimeout的作用域具有全局性,和setInterval是一样的
       },1000)
       }
}

调用方式:

Processor.process();

一种简化的模式为:

//让一个方法在一个固定的作用域里面进行节流,一般是100ms执行一次

function throttle(method,context)
{
  clearTimeout(method.tid);//第一次没有tid
  method.tid=setTimeout(function(){method.call(context);},100)//每隔100ms执行一次
}
调用方式:
window.onresize=function()
{
throttle(resizeDiv);
   //让这个resizeDiv方法在全局作用域里面运行,当页面的大小发生变化的时候,我们每隔100ms调用一次resizeDiv方法,这里没有指定context
   //当页面很复杂的时候计算offsetWidth等特别耗时,同时设置height可能需要回流,因此这里用了函数节流
}

你可能感兴趣的:(重视函数节流)