You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中如何仅针对特定状态码重试HTTP请求?

解决RxJS retry操作符的错误过滤问题

你可以通过retry配置项中的filter函数来实现错误过滤,只对符合特定条件的错误执行重试逻辑。

filter函数接收错误对象作为参数,返回布尔值:

  • 返回true时,触发重试
  • 返回false时,跳过重试,直接将错误传递到后续的catchError

修改后的代码示例如下:

return next.handle(copiedRequest).pipe(
  retry({
    count: 5,
    delay: 1000,
    // 定义重试的过滤条件
    filter: (error: HttpErrorResponse) => {
      // 示例:仅对服务器无响应(status 0)或5xx服务器错误重试
      return error.status === 0 || (error.status >= 500 && error.status < 600);
    }
  }),
  catchError((error: HttpErrorResponse) => {
    if (error.status === 0) {
      // 处理服务器无响应的逻辑
    }
    return throwError(() => error);
  })
);

这样配置后,像400(请求参数错误)、401(未授权)这类客户端错误会直接进入catchError,不会触发重试,避免无意义的请求重复发送。

内容的提问来源于stack exchange,提问作者Eduard Keilholz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:58:11