函数防抖
防抖,触发事件后的n秒内函数只能执行一次,如果在n秒内又触发了事件,就会重新计算函数执行的时间
function debounce(fun, await, immediate) {
let timer;
return function (...args) {
//立即执行
let context = this;
clearTimeout(timer);
if (immediate) {
let callNoe = !timer;
timer = setTimeout(() => {
// fun.apply(context,arg)
timer = null;
}, await);
if (callNoe) fun.apply(context, arg);
} else {
timer = setTimeout(() => {
fun.apply(context, arg);
}, await);
}
};
}
//调用
content.onmousemove = debounce(count,1000);
函数节流
节流,连续触发的事件在n秒内函数只会执行一次,会稀释函数的执行频率
function throttle(func, wait) {
let timeout;
return function() {
let context = this;
let args = arguments;
if (!timeout) {
timeout = setTimeout(() => {
timeout = null;
func.apply(context, args)
}, wait)
}
}
}
调用
content.onmousemove = throttle(count,1000);