js 手写防抖节流

发布时间 2023-04-13 14:56:43作者: ducky_L

1、防抖:避免事件的频繁调用,即当事件停止一段时间后再促发。

  应用:浏览器resize、input校验、button点击

    const myDebounce = (fn, wait){
            let timer = null;
            return (...args) => {
                if (timer) clearTimeout(timer);
                timer = setTimeout(() => {
                    fn(...args);
                }, wait);
            }
        }   

  

2、节流:控制事件调用的频率,即一段时间调用一次。

  应用:scroll事件

const myThrottle=(fn,wait)=>{
    let timer=null;
    setTimeout(()=>{
        if(timer) return;
        fn();
        timer=null;
    },wait);
}