我正在使用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);
}
});
答案 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)
}
});