Skip to content

防抖与节流

防抖和节流是前端高频事件优化常用手段。

防抖(Debounce)

事件触发后延迟一段时间执行,若期间再次触发则重新计时。

js
function debounce(fn, delay) {
  let timer
  return function(...args) {
    clearTimeout(timer)
    timer = setTimeout(() => fn.apply(this, args), delay)
  }
}

节流(Throttle)

规定时间内只执行一次。

js
function throttle(fn, delay) {
  let last = 0
  return function(...args) {
    const now = Date.now()
    if (now - last > delay) {
      last = now
      fn.apply(this, args)
    }
  }
}

小结

防抖和节流能有效提升页面性能和用户体验。