javascript函数节流(throttle)与函数去抖(debounce)

Posted 我爱小明

tags:

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

throttle 等时间 间隔执行函数。

debounce 时间间隔 t 内若再次触发事件,则重新计时,直到停止时间大于或等于 t 才执行函数。

1、throttle函数的简单实现

function throttle(fn, threshhold, scope) { 
    threshhold || (threshhold = 250); 
    var last, timer; 
    return function () {
        var context = scope || this; 
        var now = +new Date(), 
            args = arguments; 
        if (last && now - last + threshhold < 0) { 
            // hold on to it 
            clearTimeout(deferTimer); 
            timer = setTimeout(function () { 
                last = now; 
                fn.apply(context, args); 
            }, threshhold); 
        } else { 
            last = now; 
            fn.apply(context, args); 
        } 
    };
}

//调用方法
$(\'body\').on(\'mousemove\', throttle(function (event) {
    console.log(\'tick\');
}, 1000));

2、debounce函数的简单实现

function debounce(fn, delay) { 
    var timer = null; 
    return function () { 
        var context = this,
        args = arguments; 
        clearTimeout(timer); 
        timer = setTimeout(function () { 
            fn.apply(context, args); 
        }, delay); 
    };
}

//调用方法
$(\'input.username\').keypress(debounce(function (event) {
// do the Ajax request
}, 250));

转自:http://www.cnblogs.com/fsjohnhuang/p/4147810.html

以上是关于javascript函数节流(throttle)与函数去抖(debounce)的主要内容,如果未能解决你的问题,请参考以下文章

javascript函数的节流[throttle]与防抖[debounce]

Javascript函数节流 —— How To Use Throttle

javascript的防抖和节流

javascript的防抖和节流深入理解

JavaScript 防抖(debounce)和节流(throttle)

JavaScript节流和防抖