Angular 如何在catchError内发出另一个请求? this.service.login()管道( catchError((错误:HttpErrorResponse,responseObservable:Observable)=>{ 如果(error.status==400){ 返回这个.service.doSomethingElse.pipe(map(()=>throwError(error)); }否则{ 返回投掷器(错误); } }), ).订阅(
该请求的响应始终为200,当状态代码为400并从发出其他请求返回时,它不会抛出错误。 任何帮助都会很好。试试这个:Angular 如何在catchError内发出另一个请求? this.service.login()管道( catchError((错误:HttpErrorResponse,responseObservable:Observable)=>{ 如果(error.status==400){ 返回这个.service.doSomethingElse.pipe(map(()=>throwError(error)); }否则{ 返回投掷器(错误); } }), ).订阅(,angular,typescript,rxjs,Angular,Typescript,Rxjs,该请求的响应始终为200,当状态代码为400并从发出其他请求返回时,它不会抛出错误。 任何帮助都会很好。试试这个: this.service.login().pipe( catchError((error: HttpErrorResponse, responseObservable: Observable<boolean>) => { if (error.status === 400) { return this.servic
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(
使用map()
您应该使用mergeMap
或其他展平操作符将其展平。例如:
this.service.login()
.subscribe((res: any) => {
}, error => {
if (error.status === 400) {
return this.service.doSomethingElse.pipe(map(() => throwError(error)));
} else {
return throwError(error);
}
})
您能否在cathcError第一行中添加console.log(error.status)
(在if子句之前),并与我们共享输出?如果400
是string
请尝试==
而不是==
,它将打印出400。您可以使用retryWhen
管道,我宁愿将两个请求合并为一个,而不是嵌套请求。非常感谢。我已经为此做了好几个小时了。
return this.service.doSomethingElse.pipe(mergeMap(() => throwError(error)));