在 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 (将#修改为@)