let debonceObj = new Object()
function debounce(func, args, wait) {
let funString = func.toString()
if (debonceObj[funString]) {
clearTimeout(debonceObj[funString])
delete debonceObj[funString]
}
let timeoutNumber = setTimeout(() => {
// 执行函数调用
func.call(this, args)
}, wait)
debonceObj[funString] = timeoutNumber
}
debounce(add, 0, 5000)
debounce(add2, 1, 1000)
function add(num) {
console.log(num)
}
function add2(num2) {
console.log(num2)
}
防抖函数
最近项目中遇到一个问题是切换不同窗口是请求多个接口,如果用户操作过快会出现页面卡顿的问题,主要是多个请求未完成的情况下又开始重新请求,防抖函数是做什么就不赘述了,本想在百度上找一篇简单的防抖直接使用,查了半天全都一样并且只适用于一个函数的调用 ,多个函数使用的话会互相影响,所以自己写了一个,如果有不足之处希望各位看官指正,同时也告诫各位程序员小伙伴,千万别看见了就复制,整个博客 CDN 上有太多的重复性、过时性的文章百无一用、劳而无功、尘垢粃糠、味同嚼蜡。真难