防抖与节流

168 阅读1分钟

防抖

将高频次的操作优化成最后一次执行。

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

截流

每隔一段时间执行一次,就是将高频操作优化成低频操作。

function throttle(fn, delay = 200) {
    let timer = null;
    return function() {
        if(timer) {
            return;
        }
        timer = setTimeout(() => {
            fn.apply(this, arguments);
            timer = null;
        }, delay)
    }
}