Попробуй это.По сути, вы создаете массив обещаний для каждой операции, чтобы сохранить ваши тикеры.Затем используйте Promise.all, чтобы дождаться разрешения всех процессов тикера.
//What is the fastest way to make this for loop async/await to run in parallel?
var tickersPromises = []
for (i = 0; i < exchanges.length; i++) {
// pop one exchange from the array
const exchange = exchanges[i]
const exchangename = exchangesnames[i]
try {
let tickerProcessing = new Promise(async (resolve) => {
// probably do a try catch in here
const tickers = await exchange.fetchTickers();
const dumpFile = path.join(__dirname, 'tickers', `${exchangename}Tickers.json`);
await fs.promises.writeFile(dumpFile, JSON.stringify(tickers));
resolve()
})
tickersPromises.push(tickerProcessing)
} catch (e) {
console.error(e);
}
}
// wait for all of them to execute or fail
await Promise.all(tickersPromises)
С высокого уровня, если вы действительно хотите сделать этот код быстрее, прекратите запись ответа в файл и сохраните его впамять, используя объект или словарь библиотеки.Тем не менее, задержка в сети будет самой медленной.
Полагаю, это криптообмен.Имейте в виду, что тикеры часто задерживаются на крипто-обменах при использовании API REST.Вам лучше использовать интерфейс веб-сокета, который многие биржи предлагают, чтобы вы получили самую последнюю информацию о тикере, как только она станет доступна, чтобы минимизировать задержку.