gpt4 book ai didi

node.js - 创建 promise 数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:49:34 25 4
gpt4 key购买 nike

我有一组硬币,是从数据库查询中获得的。我将此数组传递给一个函数,该函数需要对每个硬币执行 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

我在下面尝试了这个,但它似乎没有执行任何 promise :

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);
}
})

});
}

最佳答案

你的代码看起来不错。除非您未向我们展示的代码中存在错误,否则一切都会得到解决。

特别是,.catch(error =>拒绝(error))看起来很可疑,因为reject没有在任何地方定义。

我在下面简化了您的代码,它按预期运行。

let i = 0;

function getActiveCoin(coin) {
console.log(`getActiveCoin("${coin}")`);
return new Promise((resolve, reject) => {
resolve(`${coin} ${++i}`);
});
}

let coins = [{
coinName: "Bitcoin"
}, {
coinName: "Stellar"
}];
let value = 0;
let promises = [];
for (let i = 0; i <= coins.length - 1; i++) {
let promise = getActiveCoin(coins[i].coinName)
promises.push(promise);
}
console.log('Promise.all');
Promise.all(promises)
.then(results => {
console.log(results);
})

关于node.js - 创建 promise 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50243782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com