防抖和节流

防抖

  • 防抖,防止抖动“你先抖动着,什么时候停下来,再执行下一步”
  • 例如,一个输入搜索框,等输入停止后,在触发搜索。

限制执行次数,多次密集的触发只执行一次

防抖

function debounce(fn, delay = 5000) {
  let timer = 0
  return function () {
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimeout(() => {
      fn.apply(this, arguments)
      timer = 0
    }, delay)
  }
}

节流

  • 节流,节省交互沟通,流不一定指流量。
  • 一个一个来,按时间节奏,插队者无效。
function throttle(fn, delay = 5000) {
  let timer = 0
  return function () {
    if (timer) return
    timer = setTimeout(() => {
      fn.apply(this, arguments)
      timer = 0
    }, delay)
  }
}

限制执行频率,有节奏的执行

posted @ 2022-04-15 16:07  awsoyou  阅读(41)  评论(0)    收藏  举报