2016-05-16 104 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