防抖:在一段delay时间内的输入都为无效,每一段delay时间执行一次
<body>
<input type="text" id="input">
<script>
let timer;
document.getElementById("input").addEventListener('input', function() {
debouce(test, 2000)
})
function test() {
console.log('aaa');
}
function debouce(func, delay) {
if (timer) return //在setTimerout没有执行之前,timer一直都存在,一直return出去
timer = setTimeout(() => {
func()
timer = null //执行完了函数,将timer设为null,让下一个setTimeout创建
}, delay)
}
</script>
</body>