angular2 rxjs observable forkjoin
You could leverage the catch
operator for each observable to intercept the error and return another observable in such cases.
Here is a sample:
return Observable.forkJoin( this.http.get('/some-url') .map((res:Response) => res.json()) .catch(res:Response => Observable.of({}), this.http.get('/some-other-url') .map((res:Response) => res.json()) .catch(res:Response => Observable.of({}),);
Uses Observable.forkJoin() to run multiple concurrent http.get() requests. The entire operation will result in an error state if any single request fails.
getBooksAndMovies() { return Observable.forkJoin( this.http.get('/app/books.json').map((res:Response) => res.json()), this.http.get('/app/movies.json').map((res:Response) => res.json()) );
But you could put your additional GET request in the error handler:
getBooksAndMovies() { Observable.forkJoin( this.http.get('/app/books.json').map((res:Response) => res.json()), this.http.get('/app/movies.json').map((res:Response) => res.json()) ).subscribe( data => { this.books = data[0] this.movies = data[1] }, err => console.error(err) );