Axios作为官方Vue推荐的Ajax插件,在连接超时timeout之后,不会再次主动连接,从而导致下次Ajax请求后端服务接口会报404错误。借助Github的分享,记录一下解决方案。

axios.defaults.retry = 4;
axios.defaults.retryDelay = 1000;

axios.interceptors.response.use(undefined, function axiosRetryInterceptor(err) {
var config = err.config;
// If config does not exist or the retry option is not set, reject
if (!config || !config.retry) return Promise.reject(err);

// Set the variable for keeping track of the retry count
config.__retryCount = config.__retryCount || 0;

// Check if we've maxed out the total number of retries
if (config.__retryCount >= config.retry) {
// Reject with the error
   return Promise.reject(err);
}

// Increase the retry count
config.__retryCount += 1;

// Create new promise to handle exponential backoff
var backoff = new Promise(function(resolve) {
setTimeout(function() {
   resolve();
   }, config.retryDelay || 1);
});

 // Return the promise in which recalls axios to retry the request
 return backoff.then(function() {
   return axios(config);
 });
});

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up