【问题标题】:send response after async call in loop [duplicate]在循环中的异步调用后发送响应[重复]
【发布时间】:2016-06-17 13:15:52
【问题描述】:

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

现在在获得所有信息之前发送响应。 如何在什么时候得到所有数据时发送响应?

是否可以在没有 async 和 promises 的情况下实现?

【问题讨论】:

  • 看起来很相似,但我试图仅通过回调找到解决方案。当然,如果可能的话,
  • 在那个骗子中接受的答案提供了一个只有回调的解决方案(没有单独的库)。

标签: javascript node.js loops express


【解决方案1】:

您可能会发现 async.js 对此很感兴趣。

在你的情况下:

async.each(products, function (product, callback) {
    api.getInfo(product, callback);
}, function (err, datas) {
    res.json(datas);
}

【讨论】:

    猜你喜欢
    • 2018-02-17
    • 2012-09-10
    • 2017-09-14
    • 2014-03-26
    • 2022-01-26
    • 2014-10-09
    • 2015-06-01
    • 2014-12-22
    • 1970-01-01
    相关资源
    最近更新 更多