指触发事件后n秒内函数只能执行一次,如果再n秒内又触发了事件,则会重新计算函数执行时间。类似于乘客上公交车,乘客上车n秒后司机关闭车门,n秒内有其他乘客上车时,司机重新计算关门的n秒时间。
未使用函数防抖时
input发生变化时发起请求
运行结果:
使用函数防抖
运行结果
实现代码
<body>
<h2>防抖</h2>
<input placeholder="请输入电话" />
<script>
//防抖: 将多次操作变成一次
let telInput = document.querySelector("input")
telInput.addEventListener('input',antiShate(demo,2000))
//防抖封装
function antiShate(fn,wait){
let timeout = null
return args =>{
if(timeout){
clearTimeout(timeout)
}
timeout = setTimeout(fn,wait)
}
}
//请求函数
function demo(){
console.log("发起请求")
}
</script>
</body>