共计 644 个字符,预计需要花费 2 分钟才能阅读完成。
一,防抖
1,定义
触发高频事件后 n 秒内函数只会执行一次,如果 n 秒内高频事件再次被触发,则从新计算工夫(就是之前的触发动作都是有效了,必须等肯定工夫)。即只有进行事件够长了,才会执行一次。
2, 实用场景
高频触发的事件。例如 keyup,onmousemove,onchange 等事件,表单的的反复提交等
3, 简易版
function debounce(fn,wait){//fn 须要防抖事件,wait 期待事件。let timer;
return ()=>{if(timer){clearTimeout(timer)// 移除上次操作。}
setTimeout(()=>{fn.apply(this,arguments)},wait)
}
}
二,节流
1, 定义
单位工夫内,只会执行一次的函数。
2, 应用场景
scroll 等可能容易导频繁触发的事件,须要节流浓缩产生的频率。
3, 代码实现
⑴定时器
function throttle(fn,wait){
let timer=null
return function(){timer=setTimeout(()=>{fn.apply(this,arguments)},wait)
timer=null
}
}
⑵比照工夫戳版
function throttle(fn,wait){let preTimer=new Date()
return function(){if(new Date()>=preTimer+wait){fn.apply(this,arguments)
preTimer=new Date()}
}
}
正文完