Angular请求报错自动重复发送问题及解决方法咨询
解决Angular请求报错时重复发起请求的问题
问题根源在你的HTTP拦截器代码中:当捕获到非401错误时,你直接返回了next.handle(request),这会重新发起一次原请求,这就是报错时自动触发第二次请求的原因。
修正后的拦截器代码
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> { return next.handle(request).pipe( catchError((err: any) => { if (err.status === 401) { return this.handle401Error(request, next); } // 非401错误直接抛出,交由业务代码的catchError处理 return throwError(() => err); }) ); }
关键说明
- 当错误状态不是401时,不要调用
next.handle(request),而是用throwError把错误重新抛出,这样错误会流到你业务请求代码里的catchError分支处理,不会触发重复请求。 - 你的业务请求代码(
this.http.post(...)部分)本身逻辑正常,catchError里返回of(false)的逻辑可以保留,它会正常处理错误并终止流。
内容的提问来源于stack exchange,提问作者Nathan30
相关产品推荐
相关产品推荐

