防抖与节流

68 阅读1分钟

防抖与节流

防抖:在事件停止触发之后的一定时间后,执行某些操作;如输入框不断输入,在停止输入后的一定时间后执行ajax请求,这就是防抖;避免了每输入一次执行一次ajax请求,减少ajax请求数量。 节流:每隔一段时间执行一次操作;如按钮点击事件,不管用户点击多少次,点击频率如何,每秒只执行一次;防止用户频繁点击,发起大量ajax请求。

防抖

/**
 * @author 王冲
 * @description 防抖函数
 * @param 参数1 fn 传入一个函数,在输入框停止输入后的delay毫秒后执行
 * @param 参数2 delay 延迟的时间 默认500毫秒
 */
export const debounce = (fn,delay = 500) => {
    let timer = null;
    return function(){
        if(timer){
            clearTimeout(timer);
        }
        timer = setTimeout(fn,delay);
    }
}

节流

/**
 * @author 王冲
 * @param {*} fn 传入一个函数,每delay毫秒执行一次
 * @param {*} delay 多好毫秒执行一次,默认1000毫秒
 * @returns 
 */
export const throttle = (fn,delay = 1000) => {
    let timer = null;
    return function(){
        if(timer){return;}
        timer = setTimeout(() => {
            fn();
            timer = null; 
        },delay);
    }
}