import axios from 'axios';
function generateReqKey(config) {
const { method, url, data, params } = config;
return [method, url, qs.stringify(data), qs.stringify(params)].join('&');
}
const penddingRequest = new Map();
function addPendingRequest(config) {
const requestKey = generateReqKey(config);
config.cancelToken = config.cancelToken || new axios.CancelToken((cancel) => {
if (!penddingRequest.has(requestKey)) {
penddingRequest.set(requestKey, cancel);
}
});
}
function removePendingRequest(config) {
const requestKey = generateReqKey(config);
if (penddingRequest.has(requestKey)) {
const cancelToken = penddingRequest.get(requestKey);
cancelToken(requestKey);
penddingRequest.delete(requestKey);
}
}
let instance = axios.create();
instance.interceptors.request.use(config => {
removePendingRequest(config );
addPendingRequest(config );
const token = "xxx";
if(token) {
config.headers["X-Token"] = token
}
return config
})
instance.interceptors.response.use(response => {
removePendingRequest(responseError.config);
if(response.data.code === 200){
return response;
}
})
参考:
https://www.qy.cn/jszx/detail/5475.html