瀏覽代碼

多请求报错防抖

PrinceLee 5 年之前
父節點
當前提交
0a28ebd3b4
共有 2 個文件被更改,包括 28 次插入5 次删除
  1. 23 0
      src/utils/mesDebounce.js
  2. 5 5
      src/utils/request.js

+ 23 - 0
src/utils/mesDebounce.js

@@ -0,0 +1,23 @@
+import {
+  Message
+} from 'element-ui'
+
+let messageInstance = null
+const overrideMessage = (options) => {
+  if (messageInstance) {
+    messageInstance.close()
+  }
+  messageInstance = Message(options)
+};
+['error', 'success', 'info', 'warning'].forEach(type => {
+  overrideMessage[type] = options => {
+    if (typeof options === 'string') {
+      options = {
+        message: options
+      }
+    }
+    options.type = type
+    return overrideMessage(options)
+  }
+})
+export const message = overrideMessage

+ 5 - 5
src/utils/request.js

@@ -1,9 +1,9 @@
 import axios from 'axios'
-import { Message } from 'element-ui'
 // import store from '@/store'
 // import { getToken } from '@/utils/auth'
 import { loginUrl } from '@/apiConfig/requestIP.js'
 import { Encrypt } from '@/utils/crypto-js.js'
+import { message } from '@/utils/mesDebounce'
 
 // create an axios instance
 const service = axios.create({
@@ -51,13 +51,13 @@ service.interceptors.response.use(
   response => {
     const res = response.data
     if (typeof res.code !== 'undefined' && res.code !== 200 && res.code !== 0) {
-      Message({
+      message({
         message: res.msg || 'Error',
         type: 'error',
         duration: 5 * 1000
       })
     } else if (typeof res.retCode !== 'undefined' && res.retCode !== 0) {
-      Message({
+      message({
         message: res.retMsg || 'Error',
         type: 'error',
         duration: 5 * 1000
@@ -108,7 +108,7 @@ service.interceptors.response.use(
         default:
           error.message = `未知错误${error.response.status}`
       }
-      Message({
+      message({
         message: error.message,
         type: 'warning',
         duration: 5 * 1000
@@ -118,7 +118,7 @@ service.interceptors.response.use(
       }
     } else {
       error.message = '网络请求超时,请检查网络信息!'
-      Message({
+      message({
         message: error.message,
         type: 'warning',
         duration: 5 * 1000