函数节流

  1. 事件被触发、n秒内只执行一次事件处理函数
function throttle(fn,time){
    var t = null,
        begin = new Date().getTime(),
        res;

    var throttled = function(){
        var _this = this,
            nowDate = new Date().getTime();

        if(t){   //每次执行,判断是否有定时器,有则清除
            clearTimeout(t);
        }
        if(nowDate - begin >= time){
            // 用户持续执行,当:当前时间 - 开始时间 > 设置的时长
            // 则会执行一次这里的代码
            res = fn.apply(_this);
            begin = nowDate;   //开始时间重置
        }else{
            //说明用户停止行为,我们需要最后在执行一次
            t = setTimeout(function(){
                res = fn.apply(_this);
            },time);
        }
        return res;
    };
    throttled.remove = function(){
        clearTimeout(t);
        t = null;
    };
    return throttled;
}
上一篇:高德、腾讯、百度实时路况切片地址


下一篇:SQL性能优化概要