项目实用功能-全局loading动画

2023-11-04

1.为设么要使用全局loading

调用的每一个接口都要绑定一个loading真的很烦。

2.实现这个需要考虑哪些要素

  • 首先全局的loading需要一个调用任何接口都要执行的地方打开,那就肯定是axios的前置拦截函数了。
  • loading有加载整个页面的,也有加载部分页面的(下拉框内容展示区等),所以不是所有接口都能使用全局loading,这就需要使用一个白名单,只对白名单内存在的接口进行处理
  • 关闭loading,那就肯定是axios的后置拦截函数了。
  • 当同时请求多个接口,如何判断所有接口请求完成后关闭loading。用一个数组存储请求的接口路径,axios后置拦截函数中删除数组中返回状态的接口,数组长度=0,关闭loading即可。

3.实现

let apiList = [];  // 存储请求的接口
api.interceptors.request.use(
    request => {
        let {interfaceLoading,whiteList} = store.state.global
        // 启动全局loding
        if(whiteList.indexOf(request.url) > -1 && !interfaceLoading){
            store.commit('global/setInterfaceLoading',true)
            // 记录请求接口,用于判断何时取消loading
            apiList.push(request.url)
        }
        return request
    }
)

api.interceptors.response.use(
    response => {
        // 清除请求地址,清空则取消loading
        let index = apiList.findIndex((item)=>item===response.config.url)
        if(index!==-1){
            apiList.splice(index,1)
        }
        if(apiList.length===0){
            store.commit('global/setInterfaceLoading',false)
        }
        // 以下为处理返回数据结果
        if (response.data) {
            if (response.data.status === 200) {
                return Promise.resolve(response.data)
            }
            else if (response.data.errorType) {
                // alert.typeOne('error',response.data.msg)
                return Promise.resolve(response.data)
            } else {
                // 请求成功并且没有报错
                return Promise.resolve(response.data)
            }
        } else {
            toLogin()
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

项目实用功能-全局loading动画 的相关文章

  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • React-Redux:state.setIn() 和 state.set() 有什么区别?

    我见过使用setIn and set 在一些react redux代码中 state setIn state set 我在这里找到了一些文档https facebook github io immutable js https facebo
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • 如何制作没有 ng-repeat 的模板并使用 Angular-drag-and-drop-lists 将数据传递到 $scope?

    我想用角度拖放列表 https github com marceljuenemann angular drag and drop lists使用我自己的网格模板到所见即所得编辑器 如何构建我自己的 HTML 模板而不需要ng repeat因
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 代码镜像错误:未捕获错误:扩展集中无法识别扩展值([对象对象])

    全部 我目前正在从事一个React Electron项目 该项目的目标是完成一个Markdown编辑器 当我配置codemirror 该程序报告错误说 Uncaught Error Unrecognized extension value
  • 如何在生产模式下为 Chrome 扩展启用 Vue 开发工具?

    我正在构建一个 chrome 扩展 并使用 vue cli webpack 配置 我希望能够在运行后使用 vue devtoolsnpm 运行构建命令 我尝试添加Vue config devtools true 在 main js 中 或者
  • 对于只触及我的工作表的 Google 表格脚本,收到“此应用程序未经验证”

    我正在编写一个 Google Sheets 脚本 我只想访问与 gs 文件关联的同一电子表格中的数据 似乎我应该有权在自己的电子表格中运行脚本 但是每当我运行一个函数时 我都会得到一个This app isn t verified信息 我该
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • 将 CKEditor 5 与 nuxtjs 结合使用

    我正在尝试在我的 Nuxtjs 项目中导入 CKEditor 5 的自定义版本 并且我已经尝试了所有可能的方法来正确导入它 但没有一个对我有用 这是其中之一 let ClassicEditor let CKEditor if process
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening

随机推荐

  • 用cmake将源代码编译成可运行的工程项目

    网上下载的完整源代码 比如 深入理解OpenCV 实用计算机视觉项目解析 想要用来学习 首先得把源码编译到自己使用的平台上 比如我的是VS2010 一般源代码给出的是 C Source C C Header 文件 以及CmakeLists
  • JS之对象-对象增强语法(ES6)

    ES6对JS的对象提供一些封装的语法糖 用来简化某些操作 1 属性值简写 给对象添加变量时 同名属性可以简写 let name zhangsan let Obj name test lalala console log name zhang
  • AI时代带来的图片造假危机,该如何解决

    一 前言 当今 图片造假问题非常泛滥 已经成为现代社会中一个严峻的问题 随着AI技术不断的发展 人们可以轻松地通过图像编辑和AI智能生成来篡改和伪造图片 使其看起来真实而难以辨别 之前就看到过一对硕士夫妻为了骗保竟篡改结婚证 离婚证等信息
  • 常用的maven命令

    常用maven命令总结 mvn v 查看版本 mvn archetype create 创建 Maven 项目 mvn compile 编译源代码 mvn test compile 编译测试代码 mvn test 运行应用程序中的单元测试
  • C++ 自带Sort(快速排序)所需的头文件和操作方法

    需要的头文件 include
  • Promise实现串行执行

    第二种写法 const arr 1 2 3 4 5 6 arr reduce async prs cur idx gt const t await prs const time idx 0 0 1000 idx 1 500 return n
  • 脚本重启电信天翼网关

    背景 家里光猫经常断网 重启才能恢复 光猫位置拔电源不方便 telnet登录重启需破解有风险 因此采用curl模拟登录web重启 最后通过其他脚本监测 实现断网时自动执行重启 bin sh a 1 loginfo curl s L http
  • MySQL与Oracle主键冲突解决方式

    1 MySQL主键冲突 当主键冲突时 可以选择更新或替换 1 1 主键冲突 主键冲突 mysql gt desc my class Field Type Null Key
  • Windows子系统安装

    Windows子系统安装 1 Windows配置修改 1 开启开发者模式 在设置中找到更新与安全 选择开发者选项将开发者模式打开 2 开启子系统 打开控制面板选择程序 按图依次点击勾选适用于Linux的Windows子系统 然后进行重启电脑
  • 四叉树在MMO中的应用

    四叉树是一种树状数据结构 在每一个节点上会有四个子区块 四叉树常应用于二维空间数据的分析与分类 它将数据区分成为四个象限 数据范围可以是方形或矩形或其他任意形状 四叉树在游戏中常常用于减少遍历的次数 1 比如 地图上有N个怪 玩家砍了一刀
  • 【毕设选题】基于stm32的智能扫地机器人设计与实现

    文章目录 0 简介 1 课题背景 2 硬件系统总体框架 2 1 电机驱动 2 2 红外线传感器 2 3 超声波传感器 2 4 MPU6050 2 5 ATK ESP8266 WI FI 模块 2 6 电源管理模块 3 软件系统设计 3 1
  • Could not acquire change log lock. Currently locked by XXX

    Could not acquire change log lock Currently locked by XXX 在项目执行liquibase时 发现超过5分钟依然执行不完成 最后报错显示被被锁了 于是找公司的网络 结果被告知该ip不是公
  • 【RPA入门教程】数据抓取功能使用教学(一)

    UiBot 0 7 版新增加了 数据抓取 功能 这项功能可以方便获取网页中的相似元素 将相似元素的数据采集到数组中 比如各种电商网站 淘宝 京东 拼多多等 的商品分类 商品列表信息 商品名 价格等 或者网页中的各种列表 表格的数据 本期教学
  • 怎样入门嵌入式嵌入式未来的发展方向

    概述 很多工程师要往嵌入式方向发展 特别是ARM得到应用后 这个趋势更是有增无减 但你真的知道怎样入门嵌入式么 你知道嵌入式未来的发展方向么 怎样入门嵌入式嵌入式未来的发展方向 在很多学生或者初级工程师都关注嵌入式 尤其在ARM大红大紫以后
  • 用js写一个简单的定时器

  • STM32学习笔记 -系统时钟Systick

    文章目录 一 SysTick系统时钟滴答定时器的相关概念 1 SysTick的两大作用 1 1 可以产生精确延时 节省定时器 1 2 可以提供给操作系统一个单独的心跳 时钟 节拍 主要 2 SysTick的定义 3 SysTick运行机制
  • 重构,改善既有代码的设计--总结篇

    重构 改善既有代码的设计 第一章感悟 一 书中经典句子 1 重构之前 首先检查自己是否有一套可靠的测试机制 这些测试必须有自我检验能力 2 面对长长的函数 需要分解 代码块越小越好管理 二 自己总结的句子 1 修改长长的函数 找到变的参数和
  • Cesium 之加载倾斜摄影3d模型(解决倾斜漂移问题)

    以Cesium3DTileset方式加载服务发布的倾斜摄影静态资源Json文件 参考如下 item url 倾斜摄影的json地址 tileset json let tileset window viewer scene primitive
  • OpenAi[ChatGPT] 使用Python对接OpenAi APi 实现智能QQ机器人-学习详解篇

    文章大部分来自 https lucent blog 原文博客地址 https blog ideaopen cn 最近火热全文的ChatGPT 被很多人玩出了花 我们在Github上可以看到几个常见的逆向SDK包 这一篇我将以学习的方式来写这
  • 项目实用功能-全局loading动画

    1 为设么要使用全局loading 调用的每一个接口都要绑定一个loading真的很烦 2 实现这个需要考虑哪些要素 首先全局的loading需要一个调用任何接口都要执行的地方打开 那就肯定是axios的前置拦截函数了 loading有加载