| | |
| | | const install = (Vue, vm) => { |
| | | // 是否正在刷新的标记 |
| | | let isRefreshing = false |
| | | // 重试队列,每一项将是一个待执行的函数形式 |
| | | let requests = [] |
| | | |
| | | // 请求拦截器 |
| | | uni.$u.http.interceptors.request.use((config) => { |
| | | const Headtoken = vm.$store.state.token |
| | |
| | | |
| | | // 响应拦截器 |
| | | uni.$u.http.interceptors.response.use((response) => { |
| | | if (response.data.code === 5112) { |
| | | if (!isRefreshing) { |
| | | isRefreshing = true |
| | | uni.login({ |
| | | provider: 'weixin', |
| | | success: async function (loginRes) { |
| | | let { code } = loginRes; |
| | | uni.request({ |
| | | url: vm.$baseUrl + 'web/account/wxLogin', |
| | | method: "GET", |
| | | data: { code }, |
| | | success: (res) => { |
| | | console.log('res', res) |
| | | isRefreshing = false |
| | | vm.$store.commit('setToken', res.data.data.token) |
| | | vm.$store.commit('setUserInfo', res.data.data.userResponse) |
| | | // 已经刷新了token,将所有队列中的请求进行重试 |
| | | requests.forEach(item => item(res.data.data.token)) |
| | | requests = [] |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | return new Promise((resolve) => { |
| | | requests.push(token => { |
| | | response.config.header['token'] = token |
| | | resolve(uni.$u.http.request(response.config)); |
| | | }) |
| | | }) |
| | | } |
| | | if (response.data.code === 5113) { |
| | | uni.navigateTo({ |
| | | url: '/pages/index/index' |