前端刷新token, 继续之前请求,但之前请求,无法拿到接口返回数据 求大神解答。

awesomezep 2020-09-16 05:31:22

封装了ajax请求, 有单独api模块, 如果token过期, 从新刷新token,继续之前的请求,但继续之前的请求,拿不到接口的返回值;如何解决。求大神


import {domain} from './config'

let isRefreshing = true
let refreshLoginUrls = []
const wxRequest = (params = {}, url) => {
let token = dd.getStorageSync({key: 'token'}) ? 'Bearer ' + dd.getStorageSync({key: 'token'}).data : ''
let data = params.query || {}
return new Promise(async (resolve, reject) => {
await dd.httpRequest({
url: domain + url,
method: params.method || 'GET',
data: JSON.stringify(data),
headers: {
"Content-Type": "application/json",
Authorization: token
},
dataType: 'json',
success:async sucInfo => {
if (sucInfo.data && sucInfo.data.resultCode == 401) {
refreshLoginUrls.push({params: params, url:url})
if (isRefreshing) {
isRefreshing = false
await refreshToken()
}
return resolve(sucInfo.data)
} else {
return resolve(sucInfo.data)
}

},
fail: failInfo => {
return reject(failInfo)
},
})
})
}

const refreshToken = () => {
return new Promise((resolve, reject) => {
dd.getAuthCode({
success: loginCode => {
if (loginCode.authCode) {
wxPost({query: {code: loginCode.authCode}}, '/api/frontend/login').then(loginInfo => {
if (loginInfo.resultCode == 200) {
dd.setStorage({
key: "token",
data: loginInfo.data.access_token,
success: () => {
dd.setStorageSync({key: 'userInfo', data:loginInfo.data.user_info })
refreshLoginUrls.forEach(item => {
wxPost(item.params, item.url).then(res => {
return resolve(res.data)
})
})
refreshLoginUrls = []
}
})
} else {
return reject(loginInfo.data)
}
})
}
}
})
})
}

const wxGet = async (params = {}, url) => {
params.method = 'GET'
return wxRequest(params, url)
}

const wxPost = async (params = {}, url) => {
params.method = 'POST'
return wxRequest(params, url)
}

module.exports = {
wxRequest, wxGet, wxPost
}
...全文
987 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43976923 2021-01-12
  • 打赏
  • 举报
回复
async await

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧