如何在Angular2中链接Http调用

我是Angular2和Http Observable的新手。 我有一个组件,它调用Http服务并返回Observable。 比我订阅该Observable,它工作正常。

现在,我想在那个组件中调用第一个Http服务之后,如果调用成功,就调用其他的Http服务并返回这个Observable。 因此,如果第一次调用不成功,则组件返回该可观察对象,相反它返回第二次调用的可观察对象。

那么问题是,链接Http调用的最佳方式是什么? 有没有优雅的方式,比如单子?

你可以使用flatMap来做到这一点

首先通过import 'rxjs/add/operator/mergeMap';

那么这里是你如何链接两个电话:

 this.http.get('./customer.json').map((res: Response) => { this.customer = res.json(); return this.customer; }) .flatMap((customer) => this.http.get(customer.contractUrl)).map((res: Response) => res.json()) .subscribe(res => this.contract = res); 

这里有更多的细节: http : //www.syntaxsuccess.com/viewarticle/angular-2.0-and-http