Parallelize multi-year rank fetch (R7)

fetchRankFromKbo awaited each year's getOrFetch sequentially even though
years use independent cache keys. Map to Promise.all so multi-year lookups
run concurrently; order is preserved.
This commit is contained in:
윤정민 2026-05-28 17:34:44 +09:00
parent f0b01a2dc0
commit 571c894278

View File

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