<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input id="input" type="text">
<script>
var input =document.getElementById('input')
input.oninput = debounce( () => console.log('fn 节流执行了'), 1000);
function debounce(fn, wait) {
let previous =0, // 上一次执行的时间
timer=null // 定时器
return (...args)=>{
// 获取当前时间
let now=new Date()
// 如果小于,则为本次触发操作设立一个新的定时器
// 定时器时间结束后执行函数 fn
if(now-previous<wait){
if(timer){clearTimeout(timer)}
timer=setTimeout(()=>{
previous=now;
fn.apply(this, args)
},wait)
}else{
// 第一次触发或者间隔时间大于等待时间,执行回调函数
previous=now
fn.apply(this.args)
}
}
}
</script>
</body>
</html>