有没有办法可以在循环中调用异步方法,将所有结果放入数组和放大器中。最后返回结果。
我想做的伪代码:
methodThatRunsAsync(callback){
once completes, invoke callback;
}
anotherMethod(){
var result = [];
for(i = 1; i = 10; i ++){methodThatRunsAsync(function(resp){ result.push(resp); }); return result; }
}
但结果的值始终是默认值。如何在同步块中捕获异步块的结果并将其返回给调用者。
调查Promise框架,但发现它有点难以理解它。如果有人能帮助我理解如何实现这一点,那么伪代码也会很棒。
答案 0 :(得分:3)
不,您无法返回结果,因为调用是异步的。也可以使用该函数的回调函数,并在添加最后一个结果时调用它:
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);
}
});
}
}
请注意,我更改了循环。你拥有的循环根本不会进行任何迭代。