2015-11-14 62 views
1

一個循環我有一個客戶端只集合,我遍歷它和每個元素髮送到服務器:等待通話的流星

collection.forEach(function (entry) { 
    Meteor.call(args, function (error, result) { 
     if (error) { 
      ... 
     } else { 
     ... 
     } 
    }); 
}); 

之後的所有元素都已經被處理我在其他操作使用它們。 如何等待所有電話完成?我找到的所有解決方案都是針對一個呼叫,但他們都沒有解決如何等待一個呼叫循環。

回答

2

這裏有一種方法,基本上在每次調用之後,檢查你已經處理了多少,如果這些都是這些,就調用你想要運行的代碼。即使存在錯誤,如果您不希望它運行(如果存在錯誤,只要將它移至else塊),並且在存在錯誤時處理的總數不會相等,那麼將在AllCallsMethod()後執行此操作。

var total = collection.length; 
var processed = 0; 
collection.forEach(function (entry) { 
    Meteor.call(args, function (error, result) { 
     if (error) { 
      ... 
     } else { 
     ... 
     } 
     processed++ 
     if (processed == total) { 
      afterAllCallsMethod(); 
     } 
    }); 
}); 
+0

謝謝,雖然現在我甚至覺得自己很愚蠢...... – pablo