并发请求关闭LOADING

 <script>
         import axios from 'axios'
         import config from '@/config'
         import store from '@/store'
         import eleUi from 'element-Ui'
         const Loading = eleUi.Loading

          //bing fa qing qiu guan bi loading    关键代码
         let loadingInstanceStack = []
         let loadingCount = 0 
         function closeLoadingInstance(){
             loadingCount --
             if(loadingCount <= 0){
                 loadingInstanceStack.forEach(loading => loading.close())
                 loadingInstanceStack = []
             }
         }
         ///

         class HttpRequest{
             constructor(baseUrl = config.baseUrl,useKey = true){
                 this.baseUrl = baseUrl
                 this.useKey = useKey
             }
             getInsideConfig(){
                 const config = {
                     baseURL : this.baseUrl,
                     headers:{}
                 }
                 return config
             }
            interceptors(instance,url){

                instance.interceptors.request.use(config =>{
                    if(this.useKey && store.state.key){
                        config.headers = config.headers || {}
                        config.headers.Authorization = store.state.key
                    }
                    return config
                },error=>{
                    return Promise.reject(error)
                })

                instance.interceptors.response.use(res => {
                    closeLoadingInstance()
                    const {data} = res
                    return data
                },error=>{
                    closeLoadingInstance()
                    return Promise.reject( (error.response && error.response.data) || error)
                })


            }

            request(options){
                const loadingInstance = Loading.service({fullscreen:false,text:'加载中...',customClass:"common-loading-class",background:"rgba(0,0,0,0)"})
                ///关键代码
                loadingInstanceStack.push(loadingInstance)
                loadingCount++
//
                options = options || {}
                const instance = axios.create()
                options = Object.assign(this.getInsideConfig(),options)
                this.interceptors(instance,options.url)
                return instance(options)
            }



         }
         export default HttpRequest




     </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值