vue3 ts 节流 防抖 函数 封装
/** * 节流函数Throttle * param {Function} func - 需要节流的函数 * param {number} delay - 节流时间毫秒 * returns {Function} - 返回节流后的函数 */ // utils/throttle.ts export function throttleT extends (...args: any[]) any( func: T, delay: number ): (...args: ParametersT) void { let lastTime 0; return function (...args: ParametersT) { const now Date.now(); if (now - lastTime delay) { func(...args); // 直接展开参数无需 this lastTime now; } }; } /** * 防抖函数TypeScript 版本 * param func 需要防抖的函数 * param delay 延迟时间毫秒 * param immediate 是否立即执行第一次调用 * returns 防抖处理后的函数 */ export function debounceT extends (...args: any[]) any( func: T, delay: number, immediate: boolean false ): (...args: ParametersT) void { let timer: ReturnTypetypeof setTimeout | null null; return function (this: ThisParameterTypeT, ...args: ParametersT) { if (immediate !timer) { func.apply(this, args); } if (timer) { clearTimeout(timer); } timer setTimeout(() { if (!immediate) { func.apply(this, args); } timer null; }, delay); }; }引用使用