函数节流的通用实现

var throttle = function(fn,interval){
        var _self = fn,//保存需要被延迟执行的函数引用
            timer,//定时器
            firstTime = true;//是否是第一次调用

        return function(){
            var args = arguments,
                _me = this;

            if(firstTime){//如果是第一次调用,不需延迟执行
                _self.apply(_me,args);
                return firstTime = false;
            }

            if(timer){//如果定时器还在,说明前一次延迟执行还没有完成
                return false;
            }

            timer = setTimeout(function(){//延迟一段时间执行
                clearTimeout(timer);
                timer = null;
                _self.apply(_me,args);
            },interval || 500);
        };
    };
//调用
window.onresize = throttle(function(){
    console.log(1);

},500);

 

转载于:https://www.cnblogs.com/gongshunkai/p/6529503.html

你可能感兴趣的:(函数节流的通用实现)