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 相关文章推荐
js自动下载文件到本地的实现代码
Apr 28 Javascript
JQuery Highcharts 动态生成图表的方法
Nov 15 Javascript
Chrome扩展页面动态绑定JS事件提示错误
Feb 11 Javascript
实现无刷新联动例子汇总
May 20 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 Javascript
关于js二维数组和多维数组的定义声明(详解)
Oct 02 Javascript
js监听input输入框值的实时变化实例
Jan 26 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
Mar 04 Javascript
javascript 判断一个对象为数组的方法
May 03 Javascript
解决vue里碰到 $refs 的问题的方法
Jul 13 Javascript
微信小程序下拉框搜索功能的实现方法
Jul 31 Javascript
对vuex中getters计算过滤操作详解
Nov 06 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脚本的10个技巧(3)
2006/10/09 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
Python读写unicode文件的方法
2015/07/10 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
python pandas生成时间列表
2019/06/29 Python
Python Django基础二之URL路由系统
2019/07/18 Python
Python全栈之列表数据类型详解
2019/10/01 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
shell变量的作用空间是什么
2013/08/17 面试题
关于赌博的检讨书
2014/01/08 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
2015年资料员工作总结
2015/04/25 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
公司员工培训管理制度
2015/08/04 职场文书
小学音乐课教学反思
2016/02/18 职场文书