防抖
n秒内函数只执行一次,如果在n秒内再次触发则从新计时。
function debounce(fn,delay){
let timer=null
return ()=>{
if(timer){
clearTimeout(timer)
}
timer=setTimeout(fn,delay)
}
}
节流
高频函数触发时,在n秒内只执行一次。
大量触发时,函数只执行一次,并且在delay时间内无效,过了delay后重新生效。
function throttle(fn,delay){
let vaild=true
return()=>{
if(!vaild){return false}
vaild=false
setTimeout(
()=>{
fn()
vaild=true
}
,delay)
}
}