作者:KTone | 来源:互联网 | 2022-12-02 17:27
我想在node.js中发出多个请求,以获取几个外部API响应,并将它们组合为一个数组。我正在使用for循环来实现这一点。这是我的代码:
res.setHeader('Content-Type', 'application/json');
const sub = req.query.days_subtract;
const enddate = req.query.end_date;
var array = [];
for (var i = 0; i
但是这段代码始终会返回[]。我知道这是因为for循环仅启动这些异步请求,但并不等待它们完成。我尝试使用async / await,但还是没有用。那么,如何等待此循环完成请求的获取并完成将请求推送到数组以便可以将其显示给用户呢?
1> Ayush Gupta..:
对于您的用例,使用await
with Promise.all
可能是最有效的解决方法。您的代码应如下所示:
res.setHeader('Content-Type', 'application/json');
const sub = req.query.days_subtract;
const enddate = req.query.end_date;
var promiseArray = [];
for (var i = 0; i
request("https://api.nasa.gov/planetary/apod?date=" + subtractDate(enddate, i) + "&api_key=DEMO_KEY", function(error, response, body) {
if (err) reject(err);
resolve(body)
})))
}
res.send(await Promise.all(promiseArray));