实现防抖函数(debounce)
防抖函数原理:在事件被触发
n秒后再执⾏回调,如果在这n秒内⼜被触发,则重新计时。
function debounce(fn,delay){
let timer = null;
return (...args)=>{
if(timer){
clearTimeout(timer)
};
timer = setTimeout(()=>{
fn.apply(this,args);
},delay);
};
}
实现节流函数(throttle)
防抖函数原理:规定在⼀个单位时间内,只能触发⼀次函数。如果这个单位时间内触发多次函数,只有⼀次⽣效。
function throttle(fn,delay){
let flag = true;
return (...args)=>{
if(!flag) return;
flag = false;
setTimeout(()=>{
fn.apply(this,args);
flag = true;
},delay)
};
}