Come concatenare le chiamate Http in Angular2?

Sono nuovo di Angular2 e Http Observable. Ho un componente che chiama il servizio Http e restituisce Observable. Di quanto sottoscrivo quell’Osservabile e funziona bene.

Ora, voglio, in quel componente, dopo aver chiamato il primo servizio Http, se la chiamata è riuscita, chiama un altro servizio Http e restituiscilo. Quindi, se la prima chiamata non è riuscita, la componente restituisce Osservabile, di fronte restituisce Osservabile della seconda chiamata.

Quindi, la domanda è, qual è il modo migliore per concatenare le chiamate Http? C’è un modo elegante, per esempio come le monadi?

Puoi farlo usando l’operatore mergeMap

Prima importa l’operatore come segue:

import 'rxjs/add/operator/mergeMap';

Quindi ecco come si concatenano due chiamate:

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

Altri dettagli qui: http://www.syntaxsuccess.com/viewarticle/angular-2.0-and-http

Ulteriori informazioni sull’operatore di mergeMap sono disponibili qui