axios的二次封装里,有什么好方法能确保在当前页面的所有请求都结束后关闭loading

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

阅读 3.9k
5 个回答

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

定义一个计数器

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题