概念解读:

在频繁触发的情况下,只有足够的空闲时间,才执行代码一次。
生活例子:坐公交,就是一定时间内,如果有人陆续刷卡上车,司机就不会开车。只有别人没刷卡了,司机才开车。

应用场景:

1、搜索输入框(监听keyup和keydown事件,请求次数过于平凡会增加服务器压力。可以让用户1s内不在输入内容,才向服务器发起请求。)

clipboard.png

2、window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次

函数方法

function debounce(func, wait) {
  let timeout = null
  return function() {
    clearTimeout(timeout)
    timeout = setTimeout(() => {
      func.apply(this, arguments)
    }, wait)
  }
}

//调用
function getData() { 
  ... // ajax
}
documentElement.addEventListener('keyup', debounce(getData, 1000));

幸福璐
70 声望12 粉丝

余生漫长,莫要慌张。