0

关于axios的二次封装, 在请求时利用拦截器弹出全局loading,在请求结束后关闭loading, 但发现些问题,在一个页面有多个请求的情况下,尤其有几个请求比较慢的情况下,第一个请求结束后loading就会先行关闭,造成了一些显示不友好, 试问有什么好的方案去解决吗, (有考虑过promise.all,但希望有更佳)

2019-06-28 提问
5 个回答
1

已采纳

最后在http.js里引了vuex ,然后全局loading由vuex里的变量来控制, 大于1时弹出loading, 为0时则关闭loading, 每次请求签在拦截器内 + 1 ,响应后-1。 在路由守卫每次进下个路由前重置成0.

1

定义一个计数器

0

全局记录请求个数 在catch中判断 如果还有请求未完成则不关闭loading 如果没有则关闭loading
其实还是用promise.all最好

0

定义每个接口对应的loading的target,然后加一个每个loading的计数器,计数器为0才取消,个人想法....

0

初始化一个数组。
每创建一个请求就把loading 的实例 push 进数组。
每完成一个请求就从 数组中 pop 出一个实例调用关闭 loading 方法。

或者用一个计数器 每发起一个请求就 +1,完成一个请求就 -1 ,每个请求完成后判断计数器是否剩余 0 如果是就关闭loading

撰写答案

推广链接