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);
}
}