diff --git a/src/repositories/kboRepository.ts b/src/repositories/kboRepository.ts index 534842f..bf39145 100644 --- a/src/repositories/kboRepository.ts +++ b/src/repositories/kboRepository.ts @@ -43,15 +43,16 @@ const TTL_MS = 60 * 60 * 1000; // 1 hour export async function fetchRankFromKbo( years: number[] ): Promise { - const results: TeamRankResult[] = []; - for (const year of years) { - const key = encodeKey(["rank", year]); - const result = await getOrFetch(key, TTL_MS, () => - fetchSingleYearRank(year) - ); - results.push(result); - } - return results; + // 연도별로 독립 캐시 키를 쓰므로 순차 대기할 이유가 없다. 병렬 처리해 다년도 + // 조회 지연을 줄인다. Promise.all은 입력 순서를 보존한다. + return Promise.all( + years.map((year) => { + const key = encodeKey(["rank", year]); + return getOrFetch(key, TTL_MS, () => + fetchSingleYearRank(year) + ); + }) + ); } /**