是否有一种方法可以在循环中调用异步方法,将所有结果放入数组中&最后返回结果。
我想做的伪代码:
methodThatRunsAsync(callback){
once completes, invoke callback;
}
另一个method(){
变量结果= [];
for(i = 1; i = 10; i ){methodThatRunsAsync(function(resp){ result.push(resp); }); return result; }
}
但是结果的值始终是默认值。如何将异步块的结果捕获在同步块中并返回给呼叫者。
研究承诺框架,但发现很难让我围绕它。如果有人可以帮助我了解如何实现这一目标,那么psoudo代码也将很棒。
否,您无法返回结果,作为异步的调用。也使用该功能回调,并在添加最后结果时调用它:
function anotherMethod (callback) {
var result = [];
var count = 10;
for(i = 0; i < count; i++) {
methodThatRunsAsync(function(resp){
result.push(resp);
if (result.length == count) {
callback(result);
}
});
}
}
请注意,我更改了循环。您所拥有的循环根本不会进行任何迭代。