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

发布于 2022-09-11 20:54:06 字数 169 浏览 20 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

明月松间行 2022-09-18 20:54:06

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

九命猫 2022-09-18 20:54:06

定义一个计数器

浅语花开 2022-09-18 20:54:06

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

土豪我们做朋友吧 2022-09-18 20:54:06

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

百变从容 2022-09-18 20:54:06

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文