diff --git a/src/main.ts b/src/main.ts index a11994a..e3360f8 100644 --- a/src/main.ts +++ b/src/main.ts @@ -568,11 +568,20 @@ const HIST_DATE_RE = /(?:on|на)\s+(\d{4}-\d{2}-\d{2})/gi; async function fetchNeededHistoricalRates(text: string): Promise { const dates = new Set(); for (const m of text.matchAll(HIST_DATE_RE)) dates.add(m[1]!); + const datesToFetch = Array.from(dates).filter((date) => !engine.hasHistoricalRates(date)); let fetched = false; - for (const date of dates) { - if (!engine.hasHistoricalRates(date)) { - const rates = await fetchHistoricalRates(date); - if (rates) { engine.setHistoricalRates(date, rates); fetched = true; } + if (datesToFetch.length > 0) { + const results = await Promise.all( + datesToFetch.map(async (date) => { + const rates = await fetchHistoricalRates(date); + return { date, rates }; + }) + ); + for (const { date, rates } of results) { + if (rates) { + engine.setHistoricalRates(date, rates); + fetched = true; + } } } if (fetched) { workspace.invalidateAll(); editor.refresh(); }