修复异常

This commit is contained in:
aixianling
2024-06-21 15:59:59 +08:00
parent 4cb1d29054
commit bdff7b020f
3 changed files with 46 additions and 28 deletions

View File

@@ -1,6 +1,5 @@
const init = () => new Promise(resolve => {
const {axios, $glob} = window
let getAuthing = false
const getToken = () => {
getAuthing = true
@@ -21,11 +20,20 @@ const init = () => new Promise(resolve => {
config.headers['h-token'] = $glob.token
return config
}
window.$wait = (t = 500) => new Promise(resolve => setTimeout(resolve, t))
http.interceptors.request.use(async config => {
while (getAuthing) {
await $wait()
window.$waitFor = (target, t = 500) => new Promise(resolve => {
const interval = setInterval(() => {
if (target) {
clearInterval(interval)
resolve(target)
}
}, t)
if (target) {
clearInterval(interval)
resolve(target)
}
})
http.interceptors.request.use(async config => {
await $waitFor(!getAuthing)
if (!$glob.token && !getAuthing) {
await getToken()
}
@@ -33,6 +41,9 @@ const init = () => new Promise(resolve => {
})
http.interceptors.response.use(res => {
if (res?.data) {
if (res.data?.code == 6004) {
return getToken().then(() => http.request(res.config))
}
return res.data
} else if (res?.code == 401) {
return getToken().then(() => http.request(res.config))
@@ -42,4 +53,4 @@ const init = () => new Promise(resolve => {
window.$http = http
resolve()
})
await init()
export default init()