我又修改了一下代码,增加了当auth过期,清除auth的代码,模拟了第一次请求就会过期的情况:
let res = 'expired'
function request(url, auth) {
return new Promise((resolve, reject) => {
console.log(`${url} request`)
let ret = res
if (url == 'getAuth') {
ret = 'token'
}
setTimeout(() => {
if (ret == 'expired') {
reject('expired')
} else {
resolve(`${url} done`)
}
}, 2000)
})
}
let _auth = null
function getAuth () {
if (_auth == null) {
_auth = request('getAuth').then(_ => {
return 'token'
})
}
return _auth
}
function fetch(url) {
return getAuth().then(auth => {
return request(url, auth).catch(err => {
if (err == 'expired') {
res = 'success'
_auth = null
return fetch(url, auth)
} else {
return Promise.reject(err)
}
})
})
}
慕姐4208626
慕的地10843
随时随地看视频慕课网APP
相关分类