|
@@ -8,10 +8,21 @@ const request = axios.create({
|
|
|
|
|
|
})
|
|
|
|
|
|
+let requestList=new Set()
|
|
|
+
|
|
|
request.interceptors.request.use(
|
|
|
config=>{
|
|
|
// console.log(config);
|
|
|
config.headers['Authorization'] = localStorage.getItem('fsms_token') || ''
|
|
|
+ // 不处理get请求
|
|
|
+ if (config.method !== 'get') {
|
|
|
+ // 利用axios cancelToken 先取消请求
|
|
|
+ config.cancelToken = new axios.CancelToken(e => {
|
|
|
+ // console.log(e, config, 'CancelToken')
|
|
|
+ // 在这里取消重复请求,上个请求未完成时,相同的请求不会再次执行
|
|
|
+ requestList.has(`${config.url}`) ? e(`${config.url}---重复请求被中断`) : requestList.add(`${config.url}`)
|
|
|
+ })
|
|
|
+ }
|
|
|
return config
|
|
|
},
|
|
|
err=>{
|
|
@@ -22,6 +33,7 @@ request.interceptors.request.use(
|
|
|
|
|
|
request.interceptors.response.use(
|
|
|
res=>{
|
|
|
+ requestList.delete(`${res.config.url}`)
|
|
|
if(res.request.responseType==='blob' || res.request.responseType==='Blob'){
|
|
|
// 字节流
|
|
|
if(res.status === 200){
|
|
@@ -52,14 +64,18 @@ request.interceptors.response.use(
|
|
|
}
|
|
|
},
|
|
|
err=>{
|
|
|
- const {message} = err
|
|
|
- console.log(message);
|
|
|
+ requestList.clear()
|
|
|
+ const {message} = err
|
|
|
+ console.log(message,'--错误信息');
|
|
|
+ if(!err.__CANCEL__){
|
|
|
+ // 多次点击由CancelToken取消的请求不给错误提示
|
|
|
ElMessage({
|
|
|
message: message || '网络异常',
|
|
|
type: 'error',
|
|
|
duration: 3 * 1000
|
|
|
})
|
|
|
- return Promise.reject(err)
|
|
|
+ }
|
|
|
+ return Promise.reject(err)
|
|
|
}
|
|
|
)
|
|
|
|