面试那些事

js常用防抖和节流

2021-12-02  本文已影响0人  _静夜听雨_

前端在实际应用场景中,经常用到多次触发带来的问题,伴随而来的就是防抖和节流的使用。

防抖

在指定时间间隔里再次调用函数,会清除定时器,重新计时,直到在最新的计时时间间隔里没有调用函数,才会执行定时器里的函数,即将多次执行变为最后一次执行
常用与input输入搜索防抖等

const debounce = (fn, delay = 500) =>{
    let timer = null;
    return function(){
        const context = this;
        const args = arguments;
        if(timer) {
            clearTimeout(timer);
            timer = null;
        };
        timer = setTimeout(()=>{
            fn.apply(context, args);
        }, delay);
    }
}

节流

在指定时间间隔后会执行一次函数,不会清除定时器,当计时结束后,才可以再次操作,即多次执行变为每隔一段时间执行
常用与防止多次点击等

const throttle = (fn, delay = 500) =>{
    let flag = true;
    return function(){
        if(!flag) return;
        const context = this;
        const args = arguments;
        flag = false;
        setTimeout(()=>{
            fn.apply(context, args);
            flag = true;
        }, delay);
    }
}
上一篇下一篇

猜你喜欢

热点阅读