传统防抖函数调用较为复杂,需要传入函数,且总是执行最后一次。
function debounce(func, wait) {
let timer;
return function() {
let context = this; // 注意 this 指向
let args = arguments; // arguments中存着e
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, args)
}, wait)
}
}
现在需要给系统各个地方加防抖,只执行第一次,后面的操作作废。如果用传统的防抖方法,调用太麻烦了。简化一下,最好用一行代码就可以实现防抖。 封装的方法:
function deboundce(wait) {
let timer;
return function() {
let status = true;
if (timer) {
clearTimeout(timer);
status = false;
}
timer = setTimeout(()=> {
clearTimeout(timer);
timer = false;
}, wait);
return status;
}
}
export const debPromise = deboundce(500);
调用方法:
import { debPromise } from '../utils/deboundce.js';
function() {
if(!debPromise()) return;
//后续操作
}
麻烦点个赞吧,您的点赞对我来说是莫大的鼓励,谢谢~🙏