【问题标题】:Javascript/Node.js - How to return results in order from multiple asynchronous requestsJavascript/Node.js - 如何从多个异步请求中按顺序返回结果
【发布时间】:2018-02-15 12:29:47
【问题描述】:

我刚刚学习使用 Node 进行后端编程,并且对异步编程的工作原理非常陌生。一个问题需要我从一组 url 中获取数据,并按照它们列出的顺序返回数据。我使用了一个 for 循环来获取和返回数据,基本上看起来像这样:

for(let i=0;i<urlArray.length;i++){
    http.get(urlArray[i],(response)=>{
        //return the response 
    }
}

我该怎么做?

【问题讨论】:

标签: javascript node.js asynchronous


【解决方案1】:

如果您使用 bluebird 承诺,因为它们支持 Promise.map 功能,这非常简单(而且更简洁)。

const bbPromise = require('bluebird');

return bbPromise.map([...(new Array(urlArray.length))], (item, idx) => {
    return new bbPromise(resolve => {
        http.get(urlArray[idx], (response) => {
            resolve(response);
        });
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多