高频面试题之手写防抖函数
手写防抖函数
函数防抖是指在事件被触发 n 秒后再执行回调,如果在这 n 秒内事件又被触发,则重新计时。这可以使用在一些点击请求的事件上,避免因为用户的多次点击向后端发送多次请求。
防抖就如坐电梯,当第一个人进入电梯,如果5秒内有人继续进入,门就会再次等待5秒,以此下去,如果超过5秒,他就关门了,就上去啦。
// 函数防抖的实现
function debounce(fn, wait) {
let timer = null;
return function() {
let context = this,args = arguments;
// 如果此时存在定时器的话,则取消之前的定时器重新记时
if (timer) {
clearTimeout(timer);
timer = null;
}
// 设置定时器,使事件间隔指定事件后执行
timer = setTimeout(() => {
fn.apply(context, args);
}, wait);
};
}
评论