nodejs统计数据
发布于 1 天前 作者 340515991 120 次浏览 来自 问答

在采集文章的时候遇到个问题,就是在采集完之后想统计采集的成功率,所以我在全局定义了一个数组,然后每次请求成功或者失败之后我都调用这个方法,往这个数组里面写数据做统计,然后我在调用采集的方法后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;
    }
};
回到顶部