【发布时间】:2017-04-14 10:19:13
【问题描述】:
我正在尝试从很多页面(相同的页面,但不同的数据)获取数据。我认为问题在于 Node 的异步请求方法和“for”循环。 (我是 nodejs 的新手)。
我使用 for 循环使用请求获取 JSON 数据,但循环在我得到请求的第一个响应之前完成(我认为)。
这是我每天使用 JSON 的代码:
var str = [];
for (var i = 0; i < 2000; i++) {
var url = 'https://WEbPAGE.com/public?start='+prevDate+'&end='+nextDate;
request(url, (error, response, body)=> {
if (!error && response.statusCode === 200) {
str.push(body+'\r\n')
}
})
prevDate = nextDate;
nextDate += oneDay;
if (nextDate >= today) break;
};
完成后,我从请求中获取所有数据,但未排序,并且数组的很多位置都是空的。
【问题讨论】:
-
使用bluebird库来promisify请求模块-stackoverflow.com/questions/28308131/…并使用bluebirdjs.com/docs/api/promise.all.html
-
@AnmolMittal Promises 可能会增加初学者的困惑。我认为理解回调是 Node.js 的必要部分(这些异步问题太多了)。向用户推荐 Promise 库意味着他们永远不会理解回调是如何工作的,因此永远不会真正理解 Node.JS
-
如果我要自己回答这个问题,我认为您需要在您调用的后端进行更改,前提是您可以控制它。
标签: javascript node.js