2016-03-21 18 views
1

NodeJSで非同期呼び出しを行うには 'Q'ライブラリを使用しています。 しかし、いずれかのユースケースでは、すべての非同期呼び出しが完了するまでpromiseまでdeferにする必要があります。すべての非同期コマンドが完了するまでNodeJSを待機します

public someFunction(files: string[]) : Q.Promise<string> { 
    var needSomeInfo; 
    var defer = Q.defer; 

    for (var i = 0; i < files.length; i++) { 
     _this.readFile(files[i]).then(function(res) { 
      needSomeInfo += res.Info; 

      j++; 
      if (j == files.length) { 
       defer.resolve(needSomeInfo); 
      } 
     }).fail(function(err) { 
      j++; 
      if (j == resultFiles.length) { 
       defer.resolve(needSomeInfo); 
      } 
//this is kinda stupid. I need to wait till all file calls are done because of consolidated info I need from them 
     }); 
    } 
    return defer.promise; 
} 

答えて

1

あなたは、解決のためのQ.all

Q.all(files.map(function (map) { 
    return _this.readFile(map); 
})); 
+0

感謝を使用することができますが、私は少し早い考え出した:) – Reddy

関連する問題