2

假设我有这样的代码:

            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,它返回我可以发布新照片的url,第二个是http put,我必须上传照片,第三个是http post,我必须确认照片已上传到该url。

我的问题是可以将 url 传递给第二个 switchMap 吗?在第二个 switchMap 我有来自 uploadPhotoToProviderdUrl 方法的响应,但我怎样才能从以前的方法获得响应?

4

1 回答 1

5

假设你所有的 API 调用都是 Observable:

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');
        }
    });
于 2018-08-04T15:16:43.437 回答