2016-03-21 25 views
1

NodeJS'de zaman uyumsuz çağrı yapmak için 'Q' kütüphanesini kullanıyorum. Ancak, kullanım örneklerinden birinde, tüm async çağrıları tamamlanana kadar deferpromise'a ihtiyacım var.NodeJS tüm async komutları tamamlanana kadar bekleyin

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

cevap

1

Sen çözüm için Q.all

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

Teşekkür kullanabilirsiniz, ancak erken biraz anladım :) – Reddy