RxJS switchMap并将响应传递给另一个运算符

时间:2018-08-04 15:04:10

标签: angular rxjs switchmap

假设我有这样的代码:

            this.apiService.getUrlForPhoto('photo1')
            .switchMap((url) => {
                return this.apiService.uploadPhotoToProvidedUrl(url);
            })
            .switchMap((response) => {
                return this.apiService.confirmPhotoUpload(confirmationToken);
            })
            .subscribe((response) => {
                if (response.confirmed) {
                    console.log('Success');
                }
            });

首先是http get,它返回可以在其中发布新照片的网址, 其次是http放在我必须上传照片的地方, 第三是http帖子,我必须确认照片已上传到该URL。

我的问题是可以将网址传递给第二个switchMap吗?在第二个switchMap处,我从uploadPhotoToProviderdUrl方法获得响应,但是如何从先前的方法获得响应?

1 个答案:

答案 0 :(得分:4)

假设您所有的API调用都是可观察的:

this.apiService.getUrlForPhoto('photo1')
    .switchMap((url) => {
        return this.apiService.uploadPhotoToProvidedUrl(url)
            .switchMap((response) => {
                // Here you can use 'url'
                return this.apiService.confirmPhotoUpload(confirmationToken);
            })  
    })
    .subscribe((response) => {
        if (response.confirmed) {
            console.log('Success');
        }
    });