Javascript,Node JS:在循环中调用异步方法;返回结果

时间:2014-02-06 08:27:55

标签: javascript node.js redis

有没有办法可以在循环中调用异步方法,将所有结果放入数组和放大器中。最后返回结果。

我想做的伪代码:

methodThatRunsAsync(callback){
  once completes, invoke callback;
}
  

anotherMethod(){
     var result = [];
     for(i = 1; i = 10; i ++){

 methodThatRunsAsync(function(resp){
    result.push(resp);
 });

return result;    }
     

}

但结果的值始终是默认值。如何在同步块中捕获异步块的结果并将其返回给调用者。

调查Promise框架,但发现它有点难以理解它。如果有人能帮助我理解如何实现这一点,那么伪代码也会很棒。

1 个答案:

答案 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);
      }
    });
  }
}

请注意,我更改了循环。你拥有的循环根本不会进行任何迭代。