简单实现javascript函数防抖
首先我们需要先了解下函数防抖的概念和实现意义
什么是防抖?
防抖指的是:防止用户在短时间内,大量,高频的重复触发事件,发送大量请求,影响用户体验,给服务器带来负担。
怎么才能实现防抖?
在用户触发时间过于频繁时,只执行最后一次触发的事件。
防抖的运用场景
- 用户注册;
- 提交搜索内容等数据交互场景。
让我们来都通过一个小案例来具体了解下吧。
需求:点击add按钮,下方显示数字区域从1开始累加。但是一次点击过程只加1。
防抖前
<body>
<h1>JavaScript函数防抖</h1>
<input type="button" id="btn" value="add按钮">
<h2 id="number">显示数字</h2>
</body>
<script>
let _btn = document.querySelector('#btn');
let _number = document.querySelector('#number');
let num = 0;
let timer;
_btn.onclick = ()=> {
console.log(num);
_number.innerHTML = ++num;
}
</script>
防抖后
实现代码:
_btn.onclick = () => {
console.log(num);
if (timer != null) {
//如果触发前存在定时器,则将其清除 重置回初始化的状态
clearTimeout(timer);
}
timer = setTimeout(() => {
_number.innerHTML = ++num;
}, 500);
};
只需使用定时器就能实现,通过设定的时间来控制重复执行的时间。因为演示使用点击事件的缘故,展现起来像是一串操作后执行最后一次,实际的运用中完全由定时器执行时间控制。
这里是万物之恋,下次再见了!