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