实现一个js防抖
防抖是指在一定时间内,只让最后一次操作生效,常用于输入框搜索、滚动加载等场景中。下面是一个简单的实现:
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内重新输入,计时器会被清除,重新开始计时。
原文地址: https://www.cveoy.top/t/topic/qRA 著作权归作者所有。请勿转载和采集!