s009-手写函数防抖★★
函数防抖,使用最多的场景是,打字搜索时候,在输入最后一次多少秒之后在触发,避免了频繁请求
function debounce(fn,delay = 500) {
let timer = null;
return function() {
if(timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn.apply(this,arguments)
timer = null;
},delay)
}
}
使用
Input1.addEventListener('keyup',debounce(function(e) {
console.log(e)
},200))
立即执行版函数防抖
function debounce(fn,wait) {
let timer = null
return function(){
let context = this,args = arguments
if(timer) {
clearTimeout(timer)
}
let startNow = !timer
timer = setTimeout(() =>{
timer = null
},wait)
if(startNow) {
fn.apply(context,args)
}
}
}