// import wxCode from '@/utils/lib/code.js' // export const apiResquest = (prams) => { // return new Promise((resolve, reject) => { // let url = getApp().globalData.webApi + prams.url; // return uni.request({ // url: url, // data: prams.query, // method: prams.method, // header: { // 'Authorization': uni.getStorageSync("token"), // }, // success: (res) => { // // uni.hideLoading() // if (res.data.code == 1) { // wxCode.codes() // } // resolve(res.data); // }, // fail: (err) => { // reject(err); // }, // complete: () => { // console.log('请求完成') // } // }); // }) // } import wxCode from '@/utils/lib/code.js' let isRefreshing = false; // 标志位,表示是否正在刷新token let pendingRequests = []; // 存储等待中的请求 export const apiResquest = (params) => { return new Promise((resolve, reject) => { let url = getApp().globalData.webApi + params.url; uni.request({ url: url, data: params.query, method: params.method, header: { 'Authorization': uni.getStorageSync("token"), }, success: (res) => { // 如果返回的 code 为 1,表示需要重新获取 token if (res.data.code == 1) { if (!isRefreshing) { isRefreshing = true; // 设置标志位 wxCode.codes().then(newToken => { isRefreshing = false; // 请求完成,重置标志位 // 更新所有等待中的请求的 token pendingRequests.forEach((req) => { req.resolve({ ...res.data, token: newToken }); }); pendingRequests = []; // 清空等待中的请求 }).catch((err) => { isRefreshing = false; // 请求失败,重置标志位 // 拒绝所有等待中的请求 pendingRequests.forEach((req) => { req.reject(err); }); pendingRequests = []; // 清空等待中的请求 }); } // 如果正在刷新,加入等待中的请求 return pendingRequests.push({ resolve, reject }); } resolve(res.data); // 正常返回 }, fail: (err) => { reject(err); }, complete: () => { console.log('请求完成') } }); }); }