Vue+elementUi loading效果

elementui的loading效果

有指令和服务两种,指令是通过开关控制,服务是通过loading实例对象去控制的,但是这里需要注意的是,如果有多个请求发出,loading效果可能展示不对,比如请求两个接口,一个接口请求回来之后,立马关闭loading ,导致第二个请求还没有回来,已经关闭loading了,这样的体验是不好的。

这里解决的思路是,判断有多少个请求,等所有的请求回来之后再关闭

import {Loading} from 'element-ui'

let loading;//loading的实例对象

let loadingCount = 0;

function start(){

  loading = Loading.service({

    lock:true,

    text:'加载中',

    background:'rgba(0,0,0,0.1)'

  })
};

function end(){

  laoding.close();
}

 function showLoaing(){

  if( loadingCount==0){

    start();

  };

  loadingCount++

};

function hideLoading(){

  loadingCount--;

  if(loadingCount==0){

           end()

  }
}

 axios.interceptors.request.use(req=>{

      showLoaing();

});

axios.interceptors.response.use(res=>{

  hideLoading()

},err=>{

  try{

    hideLoading()})

  }catch(err){

    console.log(err)

  }

}

posted on 2019-09-16 14:42  slfGJ  阅读(3688)  评论(0编辑  收藏  举报

导航