防抖函数

97 阅读1分钟

(作者笔记自用)

function debounce(fn, timeout){
    timeout = timeout || 1000;
    let timer;
    return () => {
        if(timer){
            clearTimeout(timer);
        }
        timer = setTimeout(() => {
            fn();
        }, timeout);
    }
}
function print() {
    console.log('print');
}
window.addEventListener('mousemove', debounce(print, 1000), false);

用处:在频繁调用函数,但是我们只想要调用其最后一次的时候,只要每一次的事件触发时间间隔小于设置的timeout值,那么就一直不会触发fn函数,如以上函数,如果你在网页中一直移动鼠标,那么fn函数,即print函数就一直不会触发。