函数防抖
在单位时间内,如果重复触发,只执行最后一次。
- 非立即执行版的意思是触发事件后函数不会立即执行,而是在n秒后执行,如果在n秒内又触发了事件,则会重新计算函数执行时间
function antiShake(funcName,delay) {
var timer = null;
return function () {
const content = this;
const args = [...arguments];
if(timer) clearTimeout(timer);
timer = setTimeout(function () {
funcName.apply(content,args);
},delay)
}
}
- 立即执行版的意思是触发事件后函数会立即执行,然后n秒内不触发事件才能继续执行函数的效果。
function antiShake(funcName,delay) {
var timer = null;
return function () {
const content = this;
const args = [...arguments];
if(!timer){
funcName.apply(content,args);
timer = setTimeout(function(){
clearTimeout(timer);
timer = null;
},delay)
}
}
}