123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import UNI_APP from '@/.env.js'
- // 请求队列
- let requestList = [];
- // 是否正在刷新中
- let isRefreshToken = false;
- const request = (options) => {
- const header = options.header || {};
- const loginInfo = uni.getStorageSync("loginInfo");
- if (loginInfo) {
- header.accessToken = loginInfo.accessToken;
- }
- return new Promise(function(resolve, reject) {
- uni.request({
- url: UNI_APP.BASE_URL + options.url,
- method: options.method || 'GET',
- header: header,
- data: options.data || {},
- async success(res) {
- if (res.data.code == 200) {
- return resolve(res.data.data)
- } else if (res.data.code == 400) {
- getApp().exit();
- } else if (res.data.code == 401) {
- console.log("token失效,尝试重新获取")
- if (isRefreshToken) {
- // 正在刷新token,把其他请求存起来
- requestList.push(() => {
- resolve(request(options))
- })
- return;
- }
- isRefreshToken = true;
- // 发送请求, 进行刷新token操作, 获取新的token
- const res = await reqRefreshToken(loginInfo);
- if (!res || res.data.code != 200) {
- requestList = [];
- isRefreshToken = false;
- console.log("刷新token失败")
- getApp().exit();
- return;
- }
- uni.setStorageSync("loginInfo", res.data.data);
- requestList.forEach(cb => cb());
- requestList = [];
- isRefreshToken = false;
- // 重新发送刚才的请求
- return resolve(request(options))
- } else {
- uni.showToast({
- icon: "none",
- title: res.data.message,
- duration: 1500
- })
- return reject(res.data)
- }
- },
- fail(error) {
- uni.showToast({
- title: "网络似乎有点不给力,请稍后重试",
- duration: 1500
- })
- return reject(error)
- }
- });
- });
- }
- const reqRefreshToken = (loginInfo) => {
- return new Promise(function(resolve, reject) {
- uni.request({
- method: 'PUT',
- url: UNI_APP.BASE_URL + '/refreshToken',
- header: {
- refreshToken: loginInfo.refreshToken
- },
- success: (res) => {
- resolve(res);
- },
- fail: (res) => {
- reject(res);
- }
- });
- });
- }
- export default request;
|