1) рассмотрите возможность присвоения имени вашему массиву currencyNames
во множественном числе, чтобы вы могли назвать свой итератор currencyName
.
2) Ваш цикл for заново изобретает функцию array.map
.Попробуйте вместо этого использовать array.map
.
3) В цикле for есть предложение if (if (dataCollections.length === 3)
), которое также означает, что предложение else неверно в операторе if.Я предполагаю, что это опечатка.
Теперь до сути вашего вопроса, да Proimse.all(Array<Promise>)
- это то, что вы хотите;он разрешается, когда все элементы в его параметре разрешаются.
const currencyNames = ["btc", "eth", "xrp"];
let dataCollections = currencyNames.map(currencyName => new Promise((resolve, reject) =>
request.get(`https://apiv2.bitcoinaverage.com/indices/global/ticker/${currencyName}jpy`, (error, response, body) => {
if (error)
reject(error);
else
resolve(JSON.parse(body));
})));
//For rendering dataCollections
app.get("/", async (req, res) =>
res.render("home", {dataCollections: await Promise.all(dataCollections)}));