| const install = (Vue, vm) => { | 
|     // 是否正在刷新的标记 | 
|     let isRefreshing = false | 
|     // 重试队列,每一项将是一个待执行的函数形式 | 
|     let requests = [] | 
|      | 
|     // 请求拦截器 | 
|     uni.$u.http.interceptors.request.use((config) => { | 
|         uni.showLoading({ | 
|             title: '加载中', | 
|             mask: true | 
|         }); | 
|         const cookies = vm.$store.state.cookies || '' | 
|         if (cookies) { | 
|             config.header['doumee-auth-token'] = cookies; | 
|         } | 
|         return config | 
|     }, config => { | 
|         return Promise.reject(config) | 
|     }) | 
|      | 
|     // 响应拦截器 | 
|     uni.$u.http.interceptors.response.use((response) => { | 
|         uni.hideLoading(); | 
|         // 登录过期 | 
|         if (response.data.code === 401) { | 
|             if (!isRefreshing) {    // 是否已经执行刷新 | 
|                 isRefreshing = true | 
|                 uni.login({ | 
|                     provider: 'weixin', | 
|                     success: async function (loginRes) { | 
|                         let { code } = loginRes; | 
|                         uni.request({ | 
|                             url: vm.$baseUrl + 'system/loginByWxMini', | 
|                             method: "POST", | 
|                             data: { code }, | 
|                             success: (res) => { | 
|                                 isRefreshing = false | 
|                                 if (res.data.data) { | 
|                                     vm.$store.commit('setCookies', res.data.data) | 
|                                     // 已经刷新了token,将所有队列中的请求进行重试 | 
|                                     requests.forEach(item => item(res.data.data)) | 
|                                     requests = [] | 
|                                 } else { | 
|                                     uni.navigateTo({ | 
|                                         url: '/pages/login/login' | 
|                                     }) | 
|                                 } | 
|                             } | 
|                         }); | 
|                     } | 
|                 }); | 
|             } | 
|             return new Promise((resolve) => { | 
|                 // 将resolve放进队列,用一个函数形式来保存,等token刷新后直接执行 | 
|                 requests.push(token => { | 
|                     response.config.header['doumee-auth-token'] = token | 
|                     resolve(uni.$u.http.request(response.config)); | 
|                 }) | 
|             }) | 
|         } | 
|         if (response.data.code !== 200) { | 
|             uni.showToast({ | 
|                 title: response.data.message, | 
|                 icon: "none", | 
|                 duration: 2000 | 
|             }); | 
|         } | 
|         return response.data; | 
|     }, (response) => { | 
|         uni.hideLoading(); | 
|         return Promise.reject(response) | 
|     }) | 
| } | 
|   | 
| export default { install } |