使用js写一个防抖
时间: 2023-07-20 21:03:40 浏览: 80
防抖(debounce)是一种常见的性能优化方式,它可以限制在一定时间内重复触发某个函数,从而减少不必要的计算和网络请求。下面是使用 JavaScript 实现防抖的示例代码:
```javascript
function debounce(fn, delay) {
let timer = null;
return function() {
const context = this;
const args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
fn.apply(context, args);
}, delay);
};
}
```
这个函数接受两个参数:一个是要防抖的函数 `fn`,一个是防抖时间 `delay`。它返回一个新的函数,这个函数会在 `delay` 毫秒后执行 `fn` 函数。如果在 `delay` 毫秒内再次调用了这个函数,则会清除之前的计时器并重新计时。
例如,要实现在用户输入时实时搜索,但是不希望用户每输入一个字符就立即发送请求,而是等待用户输入完毕后再发送请求,可以使用防抖来解决:
```javascript
const searchInput = document.querySelector('#search-input');
const searchResult = document.querySelector('#search-result');
function search() {
// 发送搜索请求并更新搜索结果
}
searchInput.addEventListener('input', debounce(search, 500));
```
这样,当用户输入搜索关键词时,每次输入后都会等待 500 毫秒后再发送搜索请求,从而避免了频繁的网络请求。
阅读全文