У меня есть сетевой вызов, при котором вероятно, что api выдаст ошибку 400. Я хочу с этим справиться.
Прямо сейчас я делаю это так, как показано ниже -
private fetchStatus(objectId: string): Observable<string> {
return Observable.create((observer) => {
this.http.get('/api/data-one').subscribe(response => {
if (response.result === 'SUCCESS') {
observer.next('SUCCESS');
} else {
observer.next('DENIED');
}
observer.complete();
},
error => {
observer.next('DENIED');
observer.complete();
});
});
}
Но я предпочитаю делать это с помощью оператора Observable.map. Проблема с Observable.map заключается в том, что когда api выдает 400, весь наблюдаемый объект переходит в режим ошибки.
Я хочу предотвратить это, потому что этот вызов get используется в forkJoin с другими вызовами. Отказ от этого будет означать отказ всей вилки.
forkJoin([
this.http.get('/api/route-2'),
this.http.get('/api/route-1'),
this.fetchStatus('abc')
]).subscribe((responseCollection: any) => {
observer.next({
result1: responseCollection[0],
result2: responseCollection[1],
result3: responseCollection[2]
});
observer.complete();
}, error => observer.error(error));