// 全局请求队列(存储所有请求) const requestQueue = [] // 取消所有请求 export function cancelAllRequest() { requestQueue.forEach((task) => { try { task.abort() } catch {} }) requestQueue.length = 0 } // 从队列移除 function removeTask(task) { const index = requestQueue.indexOf(task) if (index > -1) requestQueue.splice(index, 1) } // ============================================== // 重写原生 uni.request // ============================================== export function overrideUniRequest() { const _originalRequest = uni.request uni.request = function (options) { const originalSuccess = options.success const originalFail = options.fail options.success = function (res) { removeTask(task) originalSuccess && originalSuccess(res) } options.fail = function (err) { removeTask(task) if (err.errMsg && err.errMsg.includes('abort')) { return } originalFail && originalFail(err) } const task = _originalRequest.call(uni, options) requestQueue.push(task) return task } }