@mt-kit/utils
Version:
18 lines (17 loc) • 886 B
TypeScript
/**
* 创建带请求去重功能的函数包装器
*
* 在指定时间窗口内,多次调用同一个函数时:
* - 只有第一次会真正向后端请求
* - 其它调用会等待第一次请求完成,并拿到相同结果
* - 请求完成后会清除缓存,确保下次调用时重新请求
*
* 这里不关心具体请求逻辑,由外部传入真正的请求函数(如 dataList)。
* 基于函数引用作为 key 进行全局缓存管理,所以可以在组件内部使用。
*
* @param fn - 需要包装的异步函数
* @param cacheWindow - 时间窗口(毫秒),默认 500ms,范围 [0, 60000]
* @returns 带去重功能的包装函数
* @throws 如果 fn 不是函数,会抛出错误
*/
export default function createDedupedRequest<T extends unknown[], R>(fn: (...args: T) => Promise<R>, cacheWindow?: number): (...args: T) => Promise<R>;