函數(shù)防抖 debounce
希望函數(shù)只執(zhí)行一次,哪怕我進(jìn)行了多次調(diào)用
01 無論觸發(fā)多少次只執(zhí)行最后一次
let box = document.querySelector("#box");
let index = 0;
let timer=0;
box.onmousemove=function(){
index++;
clearTimeout(timer);
timer=setTimeout(()=>{
console.log("move",index);
},200)
};
02 無論觸發(fā)多少次只執(zhí)行第一次
let box = document.querySelector("#box");
let index = 0;
let timer=0;
let isEnd=true;
box.onmousemove=function(){
index++;
clearTimeout(timer);
isEnd&&(console.log("move",index))
isEnd=false;
timer=setTimeout(()=>{
isEnd=true;
},200)
}
03 封裝防抖函數(shù)
function debounce(fn,delay=200,isStart=false){
let timer=0;
let isEnd=true;
return function(...args){
const _this=this;
if(isStart){
isEnd&&fn.apply(_this,args);
isEnd=false;
}
timer=setTimeout(()=>{
(!isStart)&&fn.apply(_this,args);
isEnd=true;
},delay)
}