2016-05-16 117 views
0

我有一組文件正在上傳到s3存儲桶,並且我希望在所有上傳完成後使用RxJS執行一些代碼。RxJS:等待異步操作列表完成

我的打字稿方法目前看起來是這樣的:

protected uploadToS3() 
{ 
    this.uploader.queue.map(file => { 
     this.appsService.uploadFileToS3(file, 
      (filename) => console.log(`File: ${filename}`), 
      (err) => console.log(`Error: ${err}`)) ; 
    }); 
} 

誰能推薦中,將執行一次代碼的所有next()方法RxJS的方法被調用(即接受上述filename參數的方法) ?我知道我混合的編碼風格真的不應該混合在一起,但我有一些我必須使用的遺留代碼。

謝謝!

+0

你怎麼知道什麼時候所有的電話都完成了? – user3743222

+0

這就是我所要求的。 – serlingpa

回答

0

隨着從人小膠質過一些幫助,我想出了以下內容,其中工程:

var uploadFile = Observable.bindNodeCallback(this.appsService.uploadFileToS3); 
var result = Observable.from(this.uploader.queue) 
    .flatMap(e => uploadFile(e, this.authenticationService.apiKey)); 

result.subscribe(
    x => console.log(`Success: ${x}`), 
    e => console.log(`Error: ${e}`), 
    () => console.log(`Completed`) 
); 

開心的兔子。

M