我有以下请求api:
api.get_info(name, function(err, data) {
if (err) {
return console.log(err);
}
result.push(data);
});
根据这个要求,我只回复了一个产品,但有10个产品应该从api收到结果并发送给客户端。
我尝试在循环中添加api调用:
app.get('/info', (req, res) => {
let products = ["product 1", "product 2", ... "product 10"];
let full_info = [];
for (let product of products) {
api.get_info(product, function(err, data) {
if (err) {
return console.log(err);
}
full_info.push(data);
});
}
res.json(full_info);
});
现在在收到所有信息之前发送了回复。 如何在获取所有数据时发送响应?
没有异步和承诺可以实现吗?
答案 0 :(得分:0)
您可能会发现async.js对此感兴趣。
在你的情况下:
async.each(products, function (product, callback) {
api.getInfo(product, callback);
}, function (err, datas) {
res.json(datas);
}