//在main.js設(shè)置全局的請求次數(shù),請求的間隙
axios.defaults.retry = 4;
axios.defaults.retryDelay = 1000;
axios.interceptors.response.use(undefined, functionaxiosRetryInterceptor(err){? ??
????var config = err.config;
? ? //如果配置不存在或未設(shè)置重試選項,則返回錯誤信息?
????if(!config || !config.retry) return Promise.reject(err.response.data);
? ? //設(shè)置變量即跟蹤重試次數(shù)? ??
????config.__retryCount = config.__retryCount || 0;
? ? // 檢查我們是否已經(jīng)超過了總重試次數(shù)??
? ? ?if(config.__retryCount >= config.retry) {
? ? ? ????? //?返回錯誤信息 ? ? ? ?
????????????return Promise.reject(err.response.data);
? ? }
? ? // 重試次數(shù)加1? ??
????config.__retryCount += 1;
? ? // 創(chuàng)建延時器等待發(fā)送重試請求
????var backoff = new Promise(function(resolve){? ? ? ??
????????????setTimeout(function(){? ? ? ? ? ??
????????????????resolve();
? ? ? ? }, config.retryDelay || 1);
? ? });
? ? // 返回調(diào)用AXIOS來重試請求
? ?return backoff.then(function(){? ? ? ??
????????????return axios(config);
? ? });
});