gpt4 book ai didi

javascript - 使用 Promise 构建对象数组然后发送给客户端的正确方法 - NodeJS Express

转载 作者:行者123 更新时间:2023-12-01 03:39:38 25 4
gpt4 key购买 nike

我正在尝试构建一个对象数组并将其发送给客户端。问题是由于异步代码(或者我正在学习),发送的数组是空白的。

我想要循环构建数组,然后将响应从服务器发送到客户端。有人告诉我 promise 是在这里做到这一点的最佳方法,但我无法理解如何实现。这里的 promise 会是什么样子?

var rates = [];
for (var i = 0, len = cryptoxArray.length; i < len; i++) {

cryptoxArray[i].getRate({
pair: "XBT_USD"
}, function(err, rateResponse) {
if (!err)
rates.push(rateResponse);
});

//I want this last part to wait until the array has been built so
//the array is '[object][object]'

console.log('rates: ' + rates); // now is outputting 'rates: []'
return res.json(rates);

最佳答案

正如您指定的 promise

Promise.all(cryptoxArray.map(function (cryptox) {
return new Promise(function (resolve, reject) {
return cryptox.getRate({ pair: "XBT_USD" }, function (err, rateResponse) {
return err ? reject(err) : resolve(rateResponse);
});
});
})).then(function (rates) {
return res.json(rates);
});

或者在ultra ES2015中

Promise.all(cryptoxArray.map(cryptox =>
new Promise((resolve, reject) =>
cryptox.getRate({ pair: "XBT_USD" }, (err, rateResponse) =>
err ? reject(err) : resolve(rateResponse)
)
)
))
.then(rates=> res.json(rates));

关于javascript - 使用 Promise 构建对象数组然后发送给客户端的正确方法 - NodeJS Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43994232/

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