利用axios自带的cancel函数
import axios from 'axios'
let pendingAjax = []
const fastClickMsg = '数据请求中,请稍后'
const CancelToken = axios.CancelToken
const removePendingAjax = (url, type) => {
const index = pendingAjax.findIndex(i => i.url === url)
if (index > -1) {
type === 'req' && pendingAjax[index].c(fastClickMsg)
pendingAjax.splice(index, 1)
}
}
axios.interceptors.request.use(function (config) {
const url = config.url
removePendingAjax(url, 'req')
config.cancelToken = new CancelToken(c => {
pendingAjax.push({url,c})
})
return config;
}, error => {
return Promise.reject(error);
})
axios.interceptors.response.use(
response => {
removePendingAjax(response.config.url, 'resp')
return response;
} ,error => {
return Promise.reject(error);
})