防抖:如果短时间内多次触发同一事件,只会执行一次函数。

在这里我们把这个时间间隔设置为1000ms,如果1000ms内用户没有再次触发事件,就执行函数;如果1000ms内再次触发事件,我们就把当前的计时取消,重新开始计时。

防抖函数:

debounce(func,delay){
    let timer = null;
    
    return function(...args){
        if(timer){clearTimeout(timer)}
        
        timer = setTimeout(() => {
            func.apply(this,args)
        },delay)
    }
}

节流:如果我们在短时间内大量触发同一事件,那么在函数执行一次以后,该函数在指定的时间内不再工作,直至过了这段时间才重新生效。(每隔一段时间执行一次)

节流函数:

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

王超
42 声望1 粉丝

世间美好,与你环环相扣。