概述
- 延迟 + 记忆化生成:首次生成后缓存,模拟稳定的接口返回与网络耗时。
代码
const delay = (ms: number) => new Promise(r => setTimeout(r, ms));
function memoize<T extends (...args: any[]) => any>(fn: T) {
const cache = new Map<string, ReturnType<T>>();
return (...args: Parameters<T>): ReturnType<T> => {
const key = JSON.stringify(args);
if (!cache.has(key)) cache.set(key, fn(...args));
return cache.get(key)!;
};
}
const _getTrendData = memoize(generateTrendData);
export const getTrendData = async (params: ApiParams): Promise<TrendData[]> => {
await delay(400);
return _getTrendData(params);
};