Skip to content

节流和防抖

  • 节流:n 秒内连续不断的触发某事件,单位时间内只生效一次
  • 防抖:n 秒后再执行该事件,若在 n 秒内又被触发,则重新计时

节流实现:

js
var span = document.getElementById('span')
let timer = null

// fn是你要调用的函数,delay是防抖的时间
function debounce(fn, delay) {
  timer = setTimeout(() => {
    fn()
    timer = null
  }, delay)
}

span.addEventListener('click', () => {
  if (timer) return
  debounce(() => console.log(111), 2000)
})

防抖实现:

js
var span = document.getElementById('span')
let timer = null

// fn是你要调用的函数,delay是防抖的时间
function debounce(fn, delay) {
  timer = setTimeout(() => {
    fn()
  }, delay)
}

span.addEventListener('click', () => {
  clearTimeout(timer)
  debounce(() => console.log(111), 3000)
})