2012-03-14 52 views
0

我想要來自多個集合的數據,然後想合併所有數據。我正在使用異步模塊進行順序執行。我在此代碼編寫代碼就像async.forEach iteration

var newArray = new Array(); 
     common.findAllById('list',{'boardId': parseInt(bId)},function(err,result){        
       if(err) console.log(err); 
       else{                
        if(result != null){       
         async.forEachSeries(result, function (res, callback){         
          common.findAllById('cards',{'listId':parseInt(res.listId)},function(err,temp){ 
           if(err){ callback("errr"+err);} 
           else{          
            var arr = new Array(); 
            async.forEachSeries(temp, function(tmp,callbackFn){ 
             common.findAllById('checklist',{'cardId':parseInt(tmp.cardId)}, function(err,r){ 
              if(err){ 
               callbackFn("errr"+err); 
              } 
              else{ 
              if(r !== null){ 
               console.log("r:"); 

               tmp.checklists = r;             
               arr.push(tmp);             
               callbackFn(err); 
              } 
              } 
             });           
            },function(err){ 
             console.log('arr'); 
             res.cards = arr; 
             console.log(res); 
            }); 
            newArray.push(res); 
            callback(err); 
           }                 
          });        
         }, function (err){ 
          console.log('after:'); 
          console.log(newArray);               
          return response.send(newArray); 
         });       
        } 
       } 
      }); 

完成內(第二)foreach循環回調稱爲第一foreach循環sholud但第二foreach循環的第一循環的回調的第一個循環之後函數之後被調用,然後將其與第二的foreach繼續循環迭代。這段代碼有什麼錯誤,請幫助我。 預先感謝您!

+0

應使用流量控制的圖書館之一('NPM安裝seq'會做),這個代碼是很難可讀真的考慮 – framp 2012-07-04 00:01:22

回答

2

您應該將第一個forEachSeries的callback()調用到內部forEachSeries的最終回調中。

},function(err){ 
    console.log('arr'); 
    res.cards = arr; 
    console.log(res); 
    newArray.push(res); 
    callback(err); 
}); 
+0

是的,它是這樣的,但沒有在我的代碼中的一些錯誤,這就是爲什麼它是沒有正常工作,但在改變這個錯誤後,它正在工作。 – 2012-03-16 07:00:04

相關問題