/** * 防抖函数 * @param {Function} fn 需要防抖的函数 * @param {Number} delay 延迟时间,单位毫秒 * @param {Boolean} immediate 是否立即执行 * @returns {Function} 返回防抖处理后的函数 */ export function debounce(fn, delay = 500, immediate = false) { let timer = null let isInvoke = false return function(...args) { if (timer) clearTimeout(timer) if (immediate && !isInvoke) { fn.apply(this, args) isInvoke = true } else { timer = setTimeout(() => { fn.apply(this, args) isInvoke = false timer = null }, delay) } } }