防抖:
在n秒内执行第一次 若n秒内再次执行就清除上次定时器 让函数保持最后一次执行 实现防抖。
通俗点说,为了减少请求的次数做防抖处理,就是在一定时间内多次触发一个事件,就清除之前的计时器重新开始,这样就只会认准最后一次操作进行触发,优化性能,一般再可搜索下拉框和输入框体现的场景较多。
如何再项目于中使用防抖函数?
我是放到了单独的js文件中,方便使用
创建debounce.js文件,将下面代码放文件中,再要使用组件文件中引入
![](https://i-blog.csdnimg.cn/blog_migrate/fd9a03f3eb5fdb91a6c48c4143651265.png)
有两种使用方式:
![](https://i-blog.csdnimg.cn/blog_migrate/f8322a924e0f8974cec3f914b23b3a20.png)
或者
![](https://i-blog.csdnimg.cn/blog_migrate/e838709c73035f9c7c3d9349475e05ad.png)
// func是用户传入需要防抖的函数
// wait是等待时间,若不传参,默认500ms
// 因为闭包,timer将一直在内存中
const debounce = (func, wait = 500) => {
// 缓存一个定时器
let timer = null;
// 返回的函数是每次用户实际调用的防抖函数
return (...args) => {
// 如果已经设定过定时器了就清空上一次的定时器
if (timer) clearTimeout(timer);
// 开始一个新的定时器,延迟执行用户传入的方法
timer = setTimeout(() => {
func.apply(this, args);
}, wait);
};
};