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