RxJS:等待完成异步操作列表

时间:2016-05-16 16:37:15

标签: amazon-s3 reactive-programming rxjs

我有一组文件正在上传到s3存储桶,我希望在所有上传完成后使用RxJS执行一些代码。

我的TypeScript方法目前如下所示:

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

任何人都可以在RxJS中推荐一个方法,一旦调用了所有next()方法(接受上面filename参数的方法),它就会执行代码吗?我知道我混合的编码风格实际上不应该混合在一起,但我有一些我必须使用的遗留代码。

谢谢!

1 个答案:

答案 0 :(得分:0)

在gitter的人们的帮助下,我想出了以下内容:

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`)
);

快乐的兔子。

中号