0

我正在尝试自动从许多网址中获取信息。我有这个数组,地址叫做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);
   })
 };
4

2 回答 2

1

您还可以使用异步库来控制并发,例如使用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);
   })
于 2016-04-08T15:23:21.913 回答
0

您可以使用承诺库。我建议你使用 Kriskowal 的 Q Promises。

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

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

我希望这有帮助。

于 2016-03-21T06:07:44.353 回答