Browse Source

improve performance by executing data gathering promises in parallel

pull/123/head
Valentin Zickner 4 years ago
parent
commit
0964dba51e
  1. 19
      apps/api/src/services/data-provider.service.ts

19
apps/api/src/services/data-provider.service.ts

@ -132,19 +132,26 @@ export class DataProviderService implements DataProviderInterface {
[symbol: string]: { [date: string]: IDataProviderHistoricalResponse };
} = {};
const promises: Promise<{
data: { [date: string]: IDataProviderHistoricalResponse };
symbol: string;
}>[] = [];
for (const { dataSource, symbol } of aDataGatheringItems) {
const dataProvider = this.getDataProvider(dataSource);
if (dataProvider.hasHistoricalData(symbol)) {
const data = await dataProvider.getHistorical(
[symbol],
undefined,
from,
to
promises.push(
dataProvider
.getHistorical([symbol], undefined, from, to)
.then((data) => ({ data: data?.[symbol], symbol }))
);
result[symbol] = data?.[symbol];
}
}
const allData = await Promise.all(promises);
for (const { data, symbol } of allData) {
result[symbol] = data;
}
return result;
}

Loading…
Cancel
Save