前端性能优化-防抖

防抖:如果短时间内大量触发同一事件,只会执行一次函数,将多次执行变为最后一次执行。

防抖函数的应用场景:

  • 按钮提交场景:防⽌多次提交按钮,只执⾏最后提交的⼀次
  • 服务端验证场景:表单验证需要服务端配合,只执⾏⼀段连续的输⼊事件的最后⼀次,还有搜索联想词功能类似⽣存环境请⽤lodash.debounce 

代码实现如下:

/防抖debounce代码:
function debounce(fn,delay) {
    var timer = null; // 创建一个标记用来存放定时器的返回值
    return function () {
        // 每当用户输入的时候把前一个 setTimeout clear 掉
        clearTimeout(timer); 
        // 然后又创建一个新的 setTimeout, 这样就能保证interval 间隔内如果事件持续触发,就不会执行 fn 函数
        timer = setTimeout(() => {
            fn.apply(this, arguments);
        }, delay);
   }
}

 

posted @ 2022-09-05 16:53  林中的小菜鸟  阅读(404)  评论(0)    收藏  举报