使用 "for" 循环从许多 url 中获取 html 信息的 X 射线让 objs 未定义

x-ray for grabbing html info from many urls with "for" loop are letting objs undefined

我正在尝试从许多网址中自动获取信息。我有一个地址为 arrayDep 的数组,我有一个 "for" 循环我的数组并进入网站。之后,我使用 X 射线获取我想要的信息。目前我正在使用 console.log 查看它,但稍后我会将它们添加到我的数据库中。问题是我在偶然的时间后收到未定义的对象,有时服务器繁忙消息,我认为这是我尝试 运行 x 射线的时间,所以我尝试添加超时,遗憾的是没有成功:(

代码:

 for (var i = 0; i < arrayDep.length; i++) {
   x.timeout(4000);
   x('http://www.camara.leg.br/internet/deputado/' + arrayDep[i], {
     title: 'a'
   })(function(err, obj) {
     console.log(obj.title);
   })
 };

您可以使用 promises 库。我建议您使用 Kriskowal 的 Q Promises。

这是 github 存储库的 link:https://github.com/kriskowal/q

网络上有大量关于 Q 集成的教程。 Kriskowal 在 youtube 上还有一个 1 小时长的视频,他在视频中解释了 Q 及其用途。

希望对您有所帮助。

您还可以使用 async library to control concurrency, for example using the eachLimit 函数一次执行不超过 5 个请求:

async.eachLimit(arrayDep,5, function(item){
   x('http://www.camara.leg.br/internet/deputado/' + item),{
   title: 'a'
})(function(err, obj) {
     console.log(obj.title);
   })