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 相关文章推荐
Javascript 自适应高度的Tab选项卡
Apr 05 Javascript
我的javascript 函数链之演变
Apr 07 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
Mar 01 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
Mar 01 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
Apr 30 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
Apr 20 Javascript
node.js中的事件处理机制详解
Nov 26 Javascript
BootStrap Table对前台页面表格的支持实例讲解
Dec 22 Javascript
zTree异步加载展开第一级节点的实现方法
Sep 05 Javascript
Node.js Event Loop各阶段讲解
Mar 08 Javascript
微信小程序实现的图片保存功能示例
Apr 24 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
Sep 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
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
使用console进行性能测试
2015/04/27 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
python测试驱动开发实例
2014/10/08 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
工业学校毕业生自荐书
2014/01/03 职场文书
主题实践活动总结
2014/05/08 职场文书
献爱心标语
2014/06/21 职场文书
2015元旦标语横幅
2014/12/09 职场文书
校友会致辞
2015/07/30 职场文书
演讲开头怎么书写?
2019/08/06 职场文书