У меня есть массив монет, который я получаю из запроса к базе данных. Я передаю этот массив функции, которая должна выполнить вызов API для каждой монеты, чтобы получить значение.
Цикл FOR, подобный приведенному ниже, приведет к:
(
)
// for (let i =0; i <= coins.length-1; i++){
// console.log(i);
// await (this.coinRepository.getActiveCoinAsync(i.coinName)
// .then(response => {
// // console.log((response[0].price_eur))
// // console.log((result[i].amount))
// // console.log( value +(response[0].price_eur) * (result[i].amount))
//
// value = value +((response[0].price_eur) * (i.amount))
// console.log(value)
//
// })
// .catch(error => reject(error))
// )
// }
Результат:
console.log(i)
console.log(i)
console.log(i)
value
value
value
Я попробовал это ниже, но, похоже, он не выполняет никаких обещаний:
return new Promise((resolve, reject) => {
let value = 0;
let promises =[];
for (let i =0; i <= coins.length-1; i++){
let promise = (this.coinRepository.getActiveCoin(coins[i].coinName))
promises.push(promise);
console.log(promise);
}
console.log(promises);
Promise.all(promises)
.then(results =>{
console.log(results);
})
.catch(error => reject(error))
coinRepository.getActiveCoin
getActiveCoin(coin) {
return new Promise((resolve, reject) => {
console.log(coin)
request('https://api.coinmarketcap.com/v1/ticker/'+coin+'/?convert=EUR', function (error, response, body) {
if (!error && response.statusCode == 200) {
resolve (JSON.parse(body));
}else {
reject(error);
}
})
});
}