添加请求的重写,保证在页面跳转时,清除当前页面未完成或者被阻塞的请求,确保错误信息不串页面
| | |
| | | getUserInfo |
| | | } from "./utils/auth"; |
| | | import getuiUtils from "./utils/getuiUtils"; |
| | | import { overrideUniRequest, cancelAllRequest } from './utils/RequestQueue' |
| | | export default { |
| | | onLaunch: function() { |
| | | console.log('App Launch') |
| | |
| | | } |
| | | }, false); |
| | | // #endif |
| | | |
| | | |
| | | overrideUniRequest() |
| | | |
| | | // 路由跳转时取消所有请求 |
| | | this.setupRouteInterceptor() |
| | | }, |
| | | onShow: function() { |
| | | console.log('App Show') |
| | |
| | | } |
| | | }); |
| | | }, 300) |
| | | }, |
| | | setupRouteInterceptor() { |
| | | const methods = [ |
| | | 'navigateTo', |
| | | 'redirectTo', |
| | | 'navigateBack', |
| | | 'switchTab', |
| | | 'reLaunch' |
| | | ] |
| | | |
| | | methods.forEach((m) => { |
| | | uni.addInterceptor(m, { |
| | | invoke() { |
| | | cancelAllRequest() |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | |
| | | "name" : "智云LMES", |
| | | "appid" : "__UNI__B002F49", |
| | | "description" : "", |
| | | "versionName" : "3.014", |
| | | "versionCode" : 314, |
| | | "versionName" : "3.015", |
| | | "versionCode" : 315, |
| | | "transformPx" : false, |
| | | /* 5+App特有相关 */ |
| | | "app-plus" : { |
| | |
| | | this.hform.HCenterID = data.HCenterID |
| | | this.hform.NoOutboundHqty = (data.流转卡数量 - data.出站报废关联数量 - data.出站关联数量) |
| | | this.hform.HStyleNumber = data['款号'] |
| | | //设置序列 |
| | | this.hform.HNotReportQty = data['未报工数量'] |
| | | //设置序列 |
| | | this.getHSEQList(e); |
| | | |
| | | } else { |
| New file |
| | |
| | | // 全局请求队列(存储所有请求) |
| | | 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 |
| | | } |
| | | } |