小编给大家分享一下vue工程全局如何设置ajax的等待动效,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

实现等待动效
在element-ui中,提供了两个方法进行调用loading组件,一个是在需要遮罩的div容器中添加v-loading指令,另一种就是以服务形式调用:Loading.service(options),在本项目中,在加载数据时,进行全局遮罩,所以设置let loadingInstance = Loading.service({fullscreen:true})。关闭服务形式的调用:loadingInstance.close();
axios的拦截器
个人对拦截器的作用的理解是,在请求发送前和响应处理前,对该ajax请求进行一定的设置或者处理,方便对工程内的ajax请求进行统一处理,减少重复代码。
//请求拦截器
axios.interceptors.request.use((config) => {
// 在发送请求之前做些什么
return config;
}, (error) => {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use((response) => {
// 对响应数据做点什么
return response;
}, (error) => {
// 对响应错误做点什么
return Promise.reject(error);
});有了拦截器,我们可以想到,在ajax请求发送前开启loading动画,在接收响应后关闭loading动画。但是要对每个ajax都开关一下loading动画吗?其实不必。只需要实现一个ajax的计数器,在个数大于0时,开启动画,在个数为0的时候,关闭动画。
计数器实现
let loadingInstance;
let loadCounter = {
count:0,
show:() => {
if(count < 0){
this.count ++;
loadingInstance = Loading.service({fullscreen:true});
}
},
hide:()=>{
if(count > 0){
this.count --;
this.$nextTick(()=>{//以服务的方式调用的 Loading 需要异步关闭
loadingInstance.close();
});
}
}
}使用方法
//请求拦截器
axios.interceptors.request.use((config) => {
loadCounter.show();
return config;
}, (error) => {
return Promise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use((response) => {
loadCounter.hide();
return response;
}, (error) => {
return Promise.reject(error);
});看完了这篇文章,相信你对“vue工程全局如何设置ajax的等待动效”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联成都网站设计公司行业资讯频道,感谢各位的阅读!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。