我只是在学习Node的后端编程,而且非常了解异步编程的工作原理。一个问题要求我从URL数组中获取数据,并按照列出的顺序返回数据。我使用for循环来获取和返回数据,基本上看起来像这样:
for(let i=0;i<urlArray.length;i++){
http.get(urlArray[i],(response)=>{
//return the response
}
}
我该怎么做?
答案 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);
});
});
});