函数参数类型
函数返回值类型
需要去重的函数
Optional
options: DeduplicateOptions<T> = {}配置选项
返回一个增强的去重函数
// 基础用法
const deduped = deduplicatePromise(async (query: string) => {
return await searchAPI(query);
});
// 自定义key生成器
const deduped = deduplicatePromise(
async (user: User, options: SearchOptions) => searchAPI(user, options),
{
keyGenerator: (user, options) => `${user.id}-${options.type}`,
cacheTime: 1000
}
);
// 基于特定字段缓存
const deduped = deduplicatePromise(
async (user: User, query: string, timestamp: number) => searchAPI(user, query),
{
keyFields: [0, 1], // 只基于user和query参数生成key,忽略timestamp
cacheTime: 500
}
);
// 条件缓存
const deduped = deduplicatePromise(
async (query: string, useCache: boolean) => searchAPI(query),
{
shouldCache: (query, useCache) => useCache && query.length > 2,
cacheTime: 1000
}
);
创建一个请求去重函数,确保并发调用时函数只执行一次,所有调用者都能获取结果