请求过去处理,(笔记)
程序员文章站
2022-06-02 19:06:13
...
if (code === 1007) {
const config = response.config
if (!isRefreshing) {
isRefreshing = true
refreshToken();
setTimeout(() => {
// const { token } = res.data
let token = window.sessionStorage.getItem("openId") || ""
let openToken = window.sessionStorage.getItem("openToken") || ""
token = token ? token : openToken
console.log("token11111111111111111111111111111111", token)
instance.setToken(token)
console.log(instance)
config.headers['token'] = token
config.baseURL = ''
// 已经刷新了token,将所有队列中的请求进行重试
requests.forEach(cb => cb(token))
// 重试完了别忘了清空这个队列
requests = []
isRefreshing = false
return instance(config)
}, 2000)
// instance.setToken(token)
// return refreshToken().then(res => {
// const { token } = res.data
// instance.setToken(token)
// config.headers['X-Token'] = token
// config.baseURL = ''
// // 已经刷新了token,将所有队列中的请求进行重试
// requests.forEach(cb => cb(token))
// requests = []
// return instance(config)
// }).catch(res => {
// window.location.href = '/'
// }).finally(() => {
// isRefreshing = false
// })
} else {
// 正在刷新token,将返回一个未执行resolve的promise
return new Promise((resolve) => {
// 将resolve放进队列,用一个函数形式来保存,等token刷新后直接执行
requests.push((token) => {
config.baseURL = ''
config.headers['token'] = token
resolve(instance(config))
})
})
}
}
上一篇: 请求参数编码处理学习笔记