RxJS在映射时不会抛出错误,即使底层observable抛出错误
我有一个网络调用,api可能会抛出400错误。我想优雅地处理这件事 现在我像下面这样做-RxJS在映射时不会抛出错误,即使底层observable抛出错误,rxjs,rxjs6,rxjs-pipeable-operators,Rxjs,Rxjs6,Rxjs Pipeable Operators,我有一个网络调用,api可能会抛出400错误。我想优雅地处理这件事 现在我像下面这样做- private fetchStatus(objectId: string): Observable<string> { return Observable.create((observer) => { this.http.get('/api/data-one').subscribe(response => { if (respon
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();
});
});
}
您可以使用和执行此操作。
catchError
将捕获源抛出的任何错误,并返回一个新的可观察值。在您的情况下,如果出现HTTP错误,这个新的可观察对象将被传递到forkJoin
private fetchStatus(objectId: string): Observable<string> {
return this.http.get('/api/data-one').pipe(
map(response => response.result === 'SUCCESS' ? 'SUCCESS' : 'DENIED'),
catchError(error => of('DENIED')),
);
}
private fetchStatus(objectId:string):可观察{
返回此.http.get('/api/data one').pipe(
映射(response=>response.result=='SUCCESS'?'SUCCESS':'DENIED'),
catchError(error=>of('DENIED')),
);
}
private fetchStatus(objectId: string): Observable<string> {
return this.http.get('/api/data-one').pipe(
map(response => response.result === 'SUCCESS' ? 'SUCCESS' : 'DENIED'),
catchError(error => of('DENIED')),
);
}