Web前端必做笔记之一:防抖和节流(二)
<script>
let inp = document.querySelector("input");
let t = null;
inp.oninput = function(){
if(t !== null){
clearTimeout(t);
}
t = setTimeout(()=>{
console.log(this.value);
},500)
}
</script>
首先我们看到这个代码,是不是感觉就很混乱,当我们来改的时候,就很懵,一下子看不出来,这是干嘛的。 这混乱在那里呢,1.建立了个全局变量,2.防抖的逻辑和真正的业务逻辑混在一起。这就不利于维护 那怎么解决呢?
<script>
inp.oninput = debounce(function(){
console.log(this);
console.log(this.value);
},500)
function debounce(fn,delay){
let t = null;
return function(){
if(t !==null){
clearTimeout(t);
}
t = setTimeout(()=>{
fn.call(this);
},delay)
}
}
</script>
|