等待meteor中的一系列电话

时间:2015-11-14 00:59:27

标签: asynchronous meteor callback

我只有一个客户端集合,我遍历它并将每个元素发送到服务器:

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

在处理完所有元素后,我在其他操作中使用它们。 我怎么能等到所有通话结束?我发现的所有解决方案都是针对一个呼叫,但它们都没有解决如何等待呼叫循环的问题。

1 个答案:

答案 0 :(得分:2)

这是一种方法,基本上在每次调用之后,检查您处理了多少,如果是全部,请调用您想要下次运行的代码。这将运行在AllCallsMethod()之后,即使存在错误,如果您不希望它运行,如果有错误,只需将其移动到else块,如果有错误,处理将不会等于总数。

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();
        }
    });
});