axios.interceptors.request.use( config => { config.cancelToken = source.token // 全局添加cancelToken return config }, err => { return Promise.reject(err) } )加lodading效果
时间: 2024-03-08 14:49:12 浏览: 101
vue-axios.zip
你可以在 axios 请求的拦截器中添加 loading 效果,具体操作如下:
1. 在发起请求前,定义一个全局变量,用于控制 loading 是否显示:
```
let loading = null;
```
2. 在请求拦截器中,显示 loading:
```
axios.interceptors.request.use(
config => {
// 显示loading
loading = ElementUI.Loading.service({});
config.cancelToken = source.token; // 全局添加cancelToken
return config;
},
err => {
return Promise.reject(err);
}
);
```
3. 在响应拦截器中,隐藏 loading:
```
axios.interceptors.response.use(
res => {
// 隐藏loading
loading && loading.close();
// 处理响应结果
// ...
return res;
},
err => {
// 隐藏loading
loading && loading.close();
// 处理异常
// ...
return Promise.reject(err);
}
);
```
这样,在发送请求时会显示 loading,请求结束后会隐藏 loading。需要注意的是,loading 必须在 axios 请求拦截器中定义,以确保在请求发起前就已经显示。同时,如果在请求过程中出现异常,也需要在响应拦截器中隐藏 loading。
阅读全文