From 4d6b25bf2f8ef337bf7bf9b22a31b0bade6abd18 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期一, 24 八月 2026 09:26:12 +0800
Subject: [PATCH] opo维护
---
utils/request.js | 36 ++++++++++++++++++++++++++++++++++++
1 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/utils/request.js b/utils/request.js
index ec0c440..5297f3a 100644
--- a/utils/request.js
+++ b/utils/request.js
@@ -143,14 +143,50 @@
return data;
};
+// 鎸傝捣璇锋眰闃熷垪锛氳璇佹湭瀹屾垚鏃舵殏瀛樿姹傦紝瀹屾垚鍚庢壒閲忛噸璇�
+const pendingQueue = []
+let pendingTimer = null
+
+function flushPending() {
+ clearInterval(pendingTimer)
+ pendingTimer = null
+ const q = pendingQueue.splice(0)
+ q.forEach(({ options, resolve, reject }) => {
+ request(options).then(resolve).catch(reject)
+ })
+}
+
+function pendRequest(options) {
+ return new Promise((resolve, reject) => {
+ pendingQueue.push({ options, resolve, reject })
+ if (!pendingTimer) {
+ const maxWait = 15000
+ const startTime = Date.now()
+ pendingTimer = setInterval(() => {
+ if (!uni.__authPending || Date.now() - startTime > maxWait) {
+ flushPending()
+ }
+ }, 100)
+ }
+ })
+}
+
const request = async (options) => {
try {
+ // 鉁� 璁よ瘉鎸傝捣妫�鏌ュ繀椤诲湪 URL 鎷兼帴涔嬪墠
+ // 淇濆瓨鍘熷 options锛岄噸璇曟椂閬垮厤 baseURL 鍙犲姞
+ const token = uni.getStorageSync("token");
+ if (!token && uni.__authPending && !isInWhiteList(options.url)) {
+ return pendRequest({ ...options }); // 浼犲叆鍘熷 options 鐨勫壇鏈�
+ }
+
options = {
...config,
...options,
url: config.baseURL + options.url,
header: { ...config.header, ...options.header },
};
+
options = await requestInterceptor(options);
return new Promise((resolve, reject) => {
uni.request({
--
Gitblit v1.9.3