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

如何在RTK Query中仅针对401错误取消maxRetries重试

解决RTK Query遇到401错误时终止重试的问题

核心思路是利用RTK retry 函数自带的 retryCondition 配置项,自定义重试判断逻辑——当检测到401状态码时直接终止重试,其他情况保留原有重试规则。

修改后的完整代码如下:

export const baseQuery = retry(fetchBaseQuery({
  timeout: 5000,
  headers: {
    'Content-Type': 'application/json;charset=utf-8',
    'Access-Control-Allow-Origin': '*'
  },
  prepareHeaders: (headers) => {
    if (!headers.has('Accept-Language') && accessToken) {
      headers.set('Accept-Language', i18n.language || 'en');
    }
    return headers;
  },
}), { 
  maxRetries: 3,
  // 自定义重试判断条件
  retryCondition: (error) => {
    // 遇到401直接返回false,终止重试
    if (error.status === 401) {
      return false;
    }
    // 其他情况沿用RTK默认的重试逻辑(网络错误、5xx状态码时重试)
    return retry.defaultRetryCondition(error);
  }
});

关键说明

  • retryCondition 是每次重试前都会触发的判断函数,返回true则继续重试,返回false则立即终止流程,比中间件更早介入,完美解决你之前遇到的“中间件只在所有重试完成后触发”的问题。
  • 调用retry.defaultRetryCondition(error)可以保留RTK默认的重试规则,不用自己重新写网络错误、服务器错误的判断逻辑。

内容的提问来源于stack exchange,提问作者Awantha Irushan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:57:10