我只有一个客户端集合,我遍历它并将每个元素发送到服务器:
collection.forEach(function (entry) {
Meteor.call(args, function (error, result) {
if (error) {
...
} else {
...
}
});
});
在处理完所有元素后,我在其他操作中使用它们。 我怎么能等到所有通话结束?我发现的所有解决方案都是针对一个呼叫,但它们都没有解决如何等待呼叫循环的问题。
答案 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();
}
});
});