防抖:在触发函数时,不立即执行函数。而是延迟执行,如果在延迟过程中再次触发,清除之前的延迟,重新计算延迟时间。
关键:seTimeout clearTimeout
function debonce(fun,delay){
var timer
return function(){
if (timer){
clearTimeout(timer)
}
timer = setTimeout(fun,delay)
}
}
节流:合并多次触发函数为一次,在一定的时间范围内。
function throttle(fun, delay){
var isrun = false
var timer = null
return function(){
if(isrun) return
isrun = true
timer = setTimeout(()=>{
fun()
isrun = false
} ,delay)
}
}
设计模式中行为模式–节流模式就是这个。