vue+axios+element ui 实现全局loading加载示例


Posted in Javascript onSeptember 11, 2018

实现全局loading加载

分析需求,我们只需要在请求发起的时候开始loading,响应结束的时候关闭loading,就这么简单 对不对?

import axios from 'axios';

import { Message, Loading } from 'element-ui';

import Cookies from 'js-cookie';

import router from '@/router/index'

let loading  //定义loading变量

function startLoading() { //使用Element loading-start 方法
 loading = Loading.service({
  lock: true,
  text: '加载中……',
  background: 'rgba(0, 0, 0, 0.7)'
 })
}
function endLoading() { //使用Element loading-close 方法
 loading.close()
}
//那么 showFullScreenLoading() tryHideFullScreenLoading() 要干的事儿就是将同一时刻的请求合并。
//声明一个变量 needLoadingRequestCount,每次调用showFullScreenLoading方法 needLoadingRequestCount + 1。
//调用tryHideFullScreenLoading()方法,needLoadingRequestCount - 1。needLoadingRequestCount为 0 时,结束 loading。
let needLoadingRequestCount = 0
export function showFullScreenLoading() {
 if (needLoadingRequestCount === 0) {
  startLoading()
 }
 needLoadingRequestCount++
}

export function tryHideFullScreenLoading() {
 if (needLoadingRequestCount <= 0) return
 needLoadingRequestCount--
 if (needLoadingRequestCount === 0) {
  endLoading()
 }
}

//http request 拦截器
axios.interceptors.request.use(
 config => {
  var token = ''
  if(typeof Cookies.get('user') === 'undefined'){
   //此时为空
  }else {
   token = JSON.parse(Cookies.get('user')).token
  }//注意使用的时候需要引入cookie方法,推荐js-cookie
  config.data = JSON.stringify(config.data);
  config.headers = {
   'Content-Type':'application/json'
  }
  if(token != ''){
   config.headers.token = token;
  }
  showFullScreenLoading()
  return config;
 },
 error => {
  return Promise.reject(err);
 }
);


//http response 拦截器
axios.interceptors.response.use(
 response => {
  //当返回信息为未登录或者登录失效的时候重定向为登录页面
  if(response.data.code == 'W_100004' || response.data.message == '用户未登录或登录超时,请登录!'){
   router.push({
    path:"/",
    querry:{redirect:router.currentRoute.fullPath}//从哪个页面跳转
   })
  }
  tryHideFullScreenLoading()
  return response;
 },
 error => {
  return Promise.reject(error)
 }
)

以上这篇vue+axios+element ui 实现全局loading加载示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery之Ajax运用 学习运用篇
Sep 26 Javascript
jquery统计复选框选中示例
Nov 05 Javascript
JavaScript数组常用操作技巧汇总
Nov 17 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
分享JavaScript与Java中MD5使用两个例子
Dec 23 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
vue.js入门教程之计算属性
Sep 01 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
Oct 21 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
Dec 19 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
Mar 17 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
Mar 26 Javascript
vue中引入mxGraph的步骤详解
May 17 Javascript
Webpack之tree-starking 解析
Sep 11 #Javascript
node.js之基础加密算法模块crypto详解
Sep 11 #Javascript
Vue在页面数据渲染完成之后的调用方法
Sep 11 #Javascript
浅谈Webpack核心模块tapable解析
Sep 11 #Javascript
原生js检测页面加载完毕的实例
Sep 11 #Javascript
vue props传值失败 输出undefined的解决方法
Sep 11 #Javascript
解决vue props 拿不到值的问题
Sep 11 #Javascript
You might like
PHP 面向对象 final类与final方法
2010/05/05 PHP
深入PHP autoload机制的详解
2013/06/09 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
基于python socketserver框架全面解析
2017/09/21 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Pycharm更换python解释器的方法
2018/10/29 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
python操作cfg配置文件方式
2019/12/22 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
优秀毕业生自荐信范文
2014/01/01 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书