防抖是指在一定时间内,只让最后一次操作生效,常用于输入框搜索、滚动加载等场景中。下面是一个简单的实现:

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

其中,fn为需要防抖的函数,delay为防抖的延迟时间,单位为毫秒。

使用方法如下:

function search() {
  console.log('searching...')
}

const debounceSearch = debounce(search, 500)

document.querySelector('input').addEventListener('input', debounceSearch)

在这个例子中,当用户在input输入框中输入时,会触发search函数,但由于debounceSearch函数的存在,只有当用户停止输入500ms后,才会真正执行search函数。如果用户在500ms内重新输入,计时器会被清除,重新开始计时。

实现一个js防抖

原文地址: https://www.cveoy.top/t/topic/qRA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录