节流和防抖函数

Posted jerrypig

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了节流和防抖函数相关的知识,希望对你有一定的参考价值。


/**
 * 节流函数
 * @param {Funtion} method 回调函数
 * @param {Object} context 上下文地址
 * @param {number} delay 延迟时间ms
 */
function throttle(method, context, delay) {
    delay = delay || 500;
    var currentDate = new Date();
    method.startTime = method.startTime || 0;
    if (currentDate - method.startTime > delay) {
        method.call(context);
        method.startTime = new Date();
    }
    else {
        clearTimeout(method.timer);
        method.timer = setTimeout(function () {
            throttle(method, context, delay);
        }, 50);
    }
}


/**
 * 防抖函数
 * @param {Funtion} method 回调函数
 * @param {Object} context 上下文地址
 * @param {number} delay 延迟时间ms
 */
function debound(method, context, delay) {
    delay = delay || 200;
    clearTimeout(context.deboundId);
    context.deboundId = setTimeout(function () {
        method.call(context);
    }, delay);
}

以上是关于节流和防抖函数的主要内容,如果未能解决你的问题,请参考以下文章

js节流和防抖

函数的节流和防抖

节流和防抖的实现及其应用

函数节流和防抖

节流和防抖

JS函数节流和防抖