NodeJS等待所有的asynchronous命令完成

我正在使用' Q '库在NodeJS中进行asynchronous调用。 然而在其中一个用例中,我需要defer promise直到所有的asynchronous调用完成。

 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; } 

你可以使用Q.all

 Q.all(files.map(function (map) { return _this.readFile(map); })); 
Interesting Posts