重视函数节流

来源:互联网 发布:有趣的跳跃c语言 编辑:程序博客网 时间:2024/04/29 03:56

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

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可能需要回流,因此这里用了函数节流}

0 0
原创粉丝点击