岚岚天空

防抖、节流

350 0
/*函数节流*/
throttle(fn, interval) {
    var enterTime = 0;//触发的时间
    var gapTime = interval || 300 ;//间隔时间,如果interval不传,则默认300ms
    return function() {
        var context = this;
        var backTime = new Date();//第一次函数return即触发的时间
        if (backTime - enterTime > gapTime) {
            fn.call(context,arguments);
            enterTime = backTime;//赋值给第一次触发的时间,这样就保存了第二次触发的时间
        }
    };
},

/*函数防抖*/
debounce(fn, interval) {
    var timer;
    var gapTime = interval || 200;//间隔时间,如果interval不传,则默认1000ms
        return function() {
            clearTimeout(timer);
            var context = this;
            var args = arguments;//保存此处的arguments,因为setTimeout是全局的,arguments不是防抖函数需要的。
            timer = setTimeout(function() {
                fn.call(context,args);
            }, gapTime);
        };
    }
}

本文标签: 防抖 节流

发表评论 (350人参与, 0 条评论)

评论列表

    快来评论,快来抢沙发吧~