添加请求的重写,保证在页面跳转时,清除当前页面未完成或者被阻塞的请求,确保错误信息不串页面
1个文件已添加
3个文件已修改
87 ■■■■■ 已修改文件
App.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/gongxuOut/Cj_StationOutBill_Standard.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/RequestQueue.js 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
App.vue
@@ -8,6 +8,7 @@
        getUserInfo
    } from "./utils/auth";
    import getuiUtils from "./utils/getuiUtils";
    import { overrideUniRequest, cancelAllRequest } from './utils/RequestQueue'
    export default {
        onLaunch: function() {
            console.log('App Launch')
@@ -69,6 +70,12 @@
                }
            }, false);
            // #endif
            overrideUniRequest()
            // 路由跳转时取消所有请求
            this.setupRouteInterceptor()
        },
        onShow: function() {
            console.log('App Show')
@@ -98,6 +105,23 @@
                        }
                    });
                }, 300)
            },
            setupRouteInterceptor() {
                const methods = [
                    'navigateTo',
                    'redirectTo',
                    'navigateBack',
                    'switchTab',
                    'reLaunch'
                ]
                methods.forEach((m) => {
                    uni.addInterceptor(m, {
                        invoke() {
                            cancelAllRequest()
                        }
                    })
                })
            }
        }
    }
manifest.json
@@ -2,8 +2,8 @@
    "name" : "智云LMES",
    "appid" : "__UNI__B002F49",
    "description" : "",
    "versionName" : "3.014",
    "versionCode" : 314,
    "versionName" : "3.015",
    "versionCode" : 315,
    "transformPx" : false,
    /* 5+App特有相关 */
    "app-plus" : {
pages/gongxuOut/Cj_StationOutBill_Standard.vue
@@ -1504,7 +1504,8 @@
                            this.hform.HCenterID = data.HCenterID
                            this.hform.NoOutboundHqty = (data.流转卡数量 - data.出站报废关联数量 - data.出站关联数量)
                            this.hform.HStyleNumber = data['款号']
                            //设置序列
                            this.hform.HNotReportQty = data['未报工数量']
                            //设置序列
                            this.getHSEQList(e);
                            
                        } else {
utils/RequestQueue.js
New file
@@ -0,0 +1,56 @@
// 全局请求队列(存储所有请求)
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
  }
}