this.service.login().pipe(
catchError((error: HttpErrorResponse, responseObservable: Observable<boolean>) => {
if (error.status === 400) {
return this.service.doSomethingElse.pipe(map(() => throwError(error)));
} else {
return throwError(error);
}
}),
).subscribe(
对此的响应始终为200,当状态码为400并从另一个请求返回时,它不会引发错误。 任何帮助都会很棒。
答案 0 :(得分:3)
使用map()
,您可以将值从this.service.doSomethingElse
映射到throwError(error)
,从而获得流。
您应使用mergeMap
或其他拼合运算符对其进行拼合。喜欢:
return this.service.doSomethingElse.pipe(mergeMap(() => throwError(error)));
答案 1 :(得分:0)
尝试一下:
this.service.login()
.subscribe((res: any) => {
}, error => {
if (error.status === 400) {
return this.service.doSomethingElse.pipe(map(() => throwError(error)));
} else {
return throwError(error);
}
})