封装部分
'use strict';
export default {
getInstance(config) {
let instance = window.axios.create({
baseUrl: '',
timeout: '5000'
});
instance.defaults.retry = 3;
instance.defaults.retryDelay = 1000;
instance.interceptors.request.use(
function (config) {
return config
},
function (error) {
return Promise.reject(error)
}
);
instance.interceptors.response.use(
function (response) {
return response
},
function axiosRetryInterceptor(error) {
var config = error.config;
if (!config || !config.retry) {
return Promise.reject(error);
}
config.__retryCount = config.__retryCount || 0;
if (config.__retryCount >= config.retry) {
return Promise.reject(error);
}
config.__retryCount += 1;
var backoff = new Promise((resolve) => {
setTimeout(() => {
resolve();
}, config.retryDelay || 1);
});
return backoff.then(() => {
return instance(config);
});
}
);
return instance(config)
}
}
调用部分
import localAxios from './localAxios';
localAxios.getInstance({
url:
method:
}).then(function (response) {
callback && callback(response.data);
}).catch(function (error) {
errorCallback && errorCallback(error);
});