nodejs统计数据
在采集文章的时候遇到个问题,就是在采集完之后想统计采集的成功率,所以我在全局定义了一个数组,然后每次请求成功或者失败之后我都调用这个方法,往这个数组里面写数据做统计,然后我在调用采集的方法后console.log(Robot.arrStatis); 问题就是,Nodejs是异步的,文章还没采集完,这个数组就log出来了。我如何才能在所有的URL都跑完之后再log这个数组呢?
Robot.prototype.start = function(){
var self = this;
self.oCfg.opt.forEach(function(confInfo){
//这里循环开始爬数据
self.static(ruleInfo, url, 1); //每循环一次统计一次 同样在数据采集成功 或者 数据入库成功都会调用这个统计方法
});
};
Robot.prototype.static = function(ruleInfo, url, sType){
var self = this;
var type = ruleInfo.type; //文章类型
var ruleName = ruleInfo.ruleName; //规则名称
if(!self.arrStatic[type]){
self.arrStatic[type] = {};
}
if(!self.arrStatic[type][ruleName]){
self.arrStatic[type][ruleName] = {};
}
switch(sType){
case 1:
self.arrStatic[type][ruleName]['sourceUrl'] ? self.arrStatic[type][ruleName]['sourceUrl']++ : self.arrStatic[type][ruleName]['sourceUrl'] = 1;
break;
case 2:
self.arrStatic[type][ruleName]['artUrl'] ? self.arrStatic[type][ruleName]['artUrl']++ : self.arrStatic[type][ruleName]['artUrl'] = 1;
break;
case 3:
self.arrStatic[type][ruleName]['save'] ? self.arrStatic[type][ruleName]['save']++ : self.arrStatic[type][ruleName]['save'] = 1;
break;
}
};