axios重试延迟的错误代码响应

时间:2019-07-15 09:18:26

标签: axios

我正在使用axios从api接收数据,我想向其中添加错误处理,我在收到的不同错误代码上收到不同的消息(401,400,503等),但是我还想将401错误设置为1分钟超时错误代码500等上的2分钟可以使用axios而不导入axios重试吗?我尝试使用拦截器提出解决方案,但随后将axios导入的spread.js垃圾邮件发送到控制台日志中,并导致浏览器冻结。我在拦截器中使用以下代码超时

 axios.interceptors.response.use(function (response) {
                    // Do something with response data
                    console.log(response);
                    return response;
                }, function (error) {
                    // Do something with response error
                    if(error.response.status===401){
                        setTimeout(function (){
                            console.log(error.response.status===401);
                            return Promise.reject(error);
                        },10000);
                    }
                    if(error.response.status===503){
                        setTimeout(function (){
                            console.log(error.response.status===503);
                            return Promise.reject(error);
                        },30000);
                    }
                    if(error.response.status===500){
                        setTimeout(function (){
                            console.log(error.response.status===401);
                            return Promise.reject(error);
                        },50000);
                    }
                });

1 个答案:

答案 0 :(得分:0)

您需要返回setTimeout()才能正常运行。您可以在代码中使用else-if来提高效率

axios.interceptors.response.use(function(response) {
  console.log(response);
  return response;
}, function(error) {
  if (error.response.status === 401) {
    return setTimeout(function() {
      console.log(error.response.status === 401);
      return Promise.reject(error);
    }, 10000);
  }
  else if (error.response.status === 503) {
    return setTimeout(function() {
      console.log(error.response.status === 503);
      return Promise.reject(error);
    }, 30000);
  }
  else if (error.response.status === 500) {
    return setTimeout(function() {
      console.log(error.response.status === 401);
      return Promise.reject(error);
    }, 50000);
  }
  else {
    return Promise.reject(error)
  }
});