微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 reactjs 中使用 axios 的 GET 会停止;如何在等待预定义时间后自动重试

如何解决在 reactjs 中使用 axios 的 GET 会停止;如何在等待预定义时间后自动重试

我正在使用 axios 在我的 reactjs 应用程序中发出 GET 请求。这是我目前如何进行此调用代码片段:

signal = axios.CancelToken.source();
...
...
...
  getList() {
    const url = baseUrl + "/projects";
    const config = {
      cancelToken: this.signal.token,headers: { Authorization: "Bearer " + this.context.auth[0].token },};
    axios
      .get(url,config)
      .then((res) => {
        console.log(res);
        this.setState({
          collab_list: res.data,});
      })
      .catch((err) => {
        console.log("Error: ",err.message);
      });
  }

我发现我的 GET 请求在大多数情况下运行良好,但大约十分之一的情况下它们会停滞并长时间保持挂起状态。在此期间,如果我刷新页面并重做 GET 请求,它可以正常工作并立即返回响应。这是我一段时间以来一直面临的问题,可能是涉及目标服务器的问题(我无法控制)。

所以我想做的是以下内容(基于我发现手动执行的工作):

  • 像上面的代码片段一样发出 GET 请求
  • 等待响应最多 5 秒钟。
  • 如果 5 秒内没有响应,则取消之前的请求,并发起新的 GET 请求。
  • 最多重复 N 次。否则失败。

所以基本上我想做的是重试,最多 N 次,如果每次 5 秒内没有响应。

我尝试使用诸如“axios-retry”之类的包,但无法获得预期的效果(不确定我是否正确使用它;也不确定它是否能够处理等待 5 秒的部分.. . 我知道它可以触发对错误代码的重试)。

感谢您的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。