1,防抖:规定时间内多次执行,只执行最后一次。
有比喻:电梯每次触发,到关门中间间隔15s,如果A按了电梯,等待15s电梯才会关门,但是15s内B按了电梯,那就要开始重新计时
使用场景:输入框中输入内容,进行联想查询。我们希望的是用户输完后进行查询,而不是用户输入过程中频繁查询
function debounce(func, delay){
let timer = null
return function(...args){
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
func.apply(this,args)
}, delay)
}
}
2,节流:规定时间内多次执行,只执行第一次。
有比喻:电梯每次触发,到关门中间间隔15s,如果A按了电梯,等待15s电梯才会关门,在这15s内不管有没有人按下电梯,到15s的时候都会关门
使用场景:页面无线加载的过程中,滑到底部自动加载
function throttle(func, delay){
let timer = null
return function(...args){
if (timer) return
timer = setTimeout(() => {
func.apply(this, args)
timer = null
}, delay)
}