Angular 2 – Encadeamento de solicitações http

Eu recebo um RxJS Observable de um httpService que é o http real do Angular. Agora, assim que eu obtiver um resultado positivo disso, eu quero processar a próxima this.retrieve() http que eu obtenho com this.retrieve() . Isso é mais ou menos solicitações concatenantes. Existe uma maneira melhor de fazer isso?

 return this.httpService.query(data) .map(data => { if(data.status > 1) this.retrieve().subscribe(); return data; }); 

O encadeamento de solicitações HTTP pode ser feito usando o operador Observable.flatMap . Digamos que queremos fazer três solicitações em que cada solicitação depende do resultado da anterior:

 this.service.firstMethod() .flatMap(firstMethodResult => this.service.secondMethod(firstMethodResult)) .flatMap(secondMethodResult => this.service.thirdMethod(secondMethodResult)) .subscribe(thirdMethodResult => { console.log(thirdMethodResult); }); 

Dessa forma, você pode encadear quantas solicitações interdependentes desejar.