fn:执行的函数方法
delay:时间
immediate:传true为节流,传false为防抖
debounce(fn, delay, immediate = true) {
let timer = null
return (...args) => {
if (immediate && !timer) {
//节流
fn(...args)
timer = setTimeout(() => {
timer = null
}, delay)
} else {
// 防抖
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn(...args)
timer = null
}, delay)
}
}
}