zrg
9 天以前 fb7fd244e76d456029558f8a764371658c3bdb28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
  }
}