如何做到所有请求完成loading消失?
RT.
Vue项目,封装了一层axios,只要调用axios就出现loading,然后在axios响应拦截器处让loading消失,这就导致了第一个请求完成后loading消失,后面的请求pending半天,用户总是感觉没数据,觉得现在唯一的办法是得知最后一个请求的状态
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
非常感谢大家的解答,现在已经解决,自答一下,如果有更好的方法希望大家分享一下,谢谢
比较好的方式是全局统一拦截器,js是单线程的,所以使用一个变量记录下当前进行中的请求
方案1. 七个请求做成队列,第一个完成再请求第二个。以此类推直到最后一个结束
方案2. 七个请求任意一个完成之后检查当前完成数(可以是简单的计数),如果满七干嘛干嘛,否则啥都不干
现在流行的 Promise 也可以,不过暂时不会用
如果有些请求需要显示loading,有些不需要显示,这种方式可能就不太适用。。。
官方例子:
function getUserAccount() {
return axios.get('/user/12345');
}
function getUserPermissions() {
return axios.get('/user/12345/permissions');
}
axios.all([getUserAccount(), getUserPermissions()])
.then(axios.spread(function (acct, perms) {
}));