一、防抖
当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触犯了事件,就重新开始延时
应用:输入框:用户停止输入1s后再调用接口
// 监听输入框,添加事件fn
// 输入框输入事件
fn(){
let timeIp = null;
return function (e) {
// 清空之前的定时器
clearTimeout(timeIp);
timeIp = setTimeout(() => {
// 搜索结果
}, 1000);
}
二、节流
当持续触发事件时,保证一定时间段内只调用一次事件处理函数。
应用:游戏打地鼠:点击之后不能再点击
三、防抖和节流区别
防抖是将多次执行变为最后一次执行
节流是将多次执行变成每隔一段时间执行
四、总结
函数节流(throttle) 与 函数防抖(debounce) 都是为了限制函数的执行频次,以优化函数触发频率过高导致的响应速度跟不上触发频率,出现延迟,假死或卡顿的现象。 这些是提高 Web 性能的重要方法