Javascript / Node.js - 如何从多个异步请求中按顺序返回结果

时间:2018-02-15 04:01:14

标签: javascript node.js asynchronous

我只是在学习Node的后端编程,而且非常了解异步编程的工作原理。一个问题要求我从URL数组中获取数据,并按照列出的顺序返回数据。我使用for循环来获取和返回数据,基本上看起来像这样:

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

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您使用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);
        });
    });
});