debounce(防抖)和throttle(节流)属于前端性能优化的的一部分,下面主要记录三部分:
一、适用场景
window对象的resize、scroll事件;输入搜索联想;监听滚动事件;鼠标不断点击触发;
- debounce防抖动
强制函数在某个时间段内只执行一次,只关心最后一次结果
- throttle节流
强制函数在某个间隔时间内制行,操作过程中持续反馈
二、手写
//防抖
function debouce(fun, delay){
let timer
return function(){
clearTimeout(timer)
timer=setTimeout(()=>{
fun.call(this,arguments)
},delay)
}
}
//节流
function thottle(fun, time){
let t1=0
return function(){
let t2=new Date()
if(t2-t1>time){
fun.call(this,arguments)
t1=t2
}
}
}