概述

  • 延迟 + 记忆化生成:首次生成后缓存,模拟稳定的接口返回与网络耗时。

代码

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);
};