函数节流与防抖

2019-07-06  本文已影响0人  lyp82nkl

什么是函数防抖和函数节流

函数防抖

在事件触发时,开始计时,在规定的时间(delay)内,若再次触发事件,将上一次计时(timer)清空,然后重新开始计时。保证只有在规定时间内没有再次触发事件之后,再去执行这个事件。

function debounce(fn, delay) {
    let timer = null;
    return function () {
        if (timer) {
            window.clearTimeout(timeId);
        } 
        timer = setTimeout(() => {
            fn.apply(this, arguments);
            timer = null;
        }, delay);
    }
}

应用场景

适合多次事件一次响应的情况:

函数节流

原理

在事件触发之后,开始计时,在规定的时间(delay)内,若再次触发事件,不对此事件做任何处理。保证在规定时间内只执行一次事件

function throttle(fn, delay) {
    let canUse = true;
    return function () {
        if (canUse) {
            fn.apply(this, arguments);
            canUse = false;
            setTimeout(() => {
                canUse = true;
            }, delay);
        } 
    }
}`

应用场景

适合大量事件按时间做平均分配触发:

上一篇 下一篇

猜你喜欢

热点阅读