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:
parent
f0b01a2dc0
commit
571c894278
@ -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;
|
})
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user