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은 입력 순서를 보존한다.
const key = encodeKey(["rank", year]); return Promise.all(
const result = await getOrFetch<TeamRankResult>(key, TTL_MS, () => years.map((year) => {
fetchSingleYearRank(year) const key = encodeKey(["rank", year]);
); return getOrFetch<TeamRankResult>(key, TTL_MS, () =>
results.push(result); fetchSingleYearRank(year)
} );
return results; })
);
} }
/** /**