import axios from 'axios'
//存放请求接口
let requireList = []
//创建axios 实例
const service = axios.create({
baseURL:process.env.VUE_APP_BASE_URL, //基础URL
timeout:30 * 1000 //请求超时
})
service.interceptors.request.use(config => {
// 将url、method、data这三个值拼接
const request = `${config.url}_${config.method}_${JSON.stringify(config.data)}`
// 用于编译响应判断
config._req = request
let cancel
config.cancelToken = new axios.CancelToken(c => {
cancel = c //取消事件
})
// 如果该接口正在请求中,则终止后面的请求
if(requireList.includes(request)){
cancel("请求重复")
}else{
requireList.push(request)
}
return config
},error=>{
//清空请求
requireList = []
return Promise.reject(error)
})
service.interceptors.response.use(config => {
// 过滤请求成功的接口
requireList = requireList.filter(item => item !== config.config._req)
return config
},error => {
//清空请求
requireList = []
return Promise.reject(error)
})
12-01
9497
10-27
4844