函数的防抖和节流

63 阅读1分钟

一、防抖

当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触犯了事件,就重新开始延时

应用:输入框:用户停止输入1s后再调用接口

// 监听输入框,添加事件fn
// 输入框输入事件
fn(){
    let timeIp = null;
    return function (e) {
        // 清空之前的定时器
        clearTimeout(timeIp);
        timeIp = setTimeout(() => {
            // 搜索结果
        }, 1000);
}

二、节流

当持续触发事件时,保证一定时间段内只调用一次事件处理函数。

应用:游戏打地鼠:点击之后不能再点击

三、防抖和节流区别

防抖是将多次执行变为最后一次执行

节流是将多次执行变成每隔一段时间执行

四、总结

函数节流(throttle)函数防抖(debounce) 都是为了限制函数的执行频次,以优化函数触发频率过高导致的响应速度跟不上触发频率,出现延迟,假死或卡顿的现象。 这些是提高 Web 性能的重要方法