@hzab/data-model 1.7.2 → 1.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # @hzab/data-model@1.7.4
2
+
3
+ fix: axios 拦截优化,解决请求取消异常问题
4
+
5
+ # @hzab/data-model@1.7.3
6
+
7
+ fix: axios 统一
8
+
1
9
  # @hzab/data-model@1.7.2
2
10
 
3
11
  feat: axios.js getCancelTokenSource 获取 axios.CancelToken.source, 用于取消请求
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/data-model",
3
- "version": "1.7.2",
3
+ "version": "1.7.4",
4
4
  "description": "data model",
5
5
  "main": "src",
6
6
  "scripts": {
package/src/axios.js CHANGED
@@ -50,10 +50,12 @@ export function setAxios(axiosList) {
50
50
  * axios 守卫
51
51
  * @param {Function} cb
52
52
  * @param {Function} errCb
53
+ * @param {Object} opt
54
+ * @param {Object} opt.replaceErrCb 直接替换回调函数
53
55
  */
54
- export function setAxRequest(cb, errCb) {
56
+ export function setAxRequest(cb, errCb, opt = {}) {
55
57
  temp.axiosList?.forEach((_ax) => {
56
- _ax.interceptors.request.use(cb, errCb);
58
+ _ax.interceptors.request.use(cb, handleErrCb(errCb, { logPrefix: "Error axios response: ", ...opt }));
57
59
  });
58
60
  }
59
61
 
@@ -61,20 +63,40 @@ export function setAxRequest(cb, errCb) {
61
63
  * 请求到结果的拦截处理
62
64
  * @param {Function} cb
63
65
  * @param {Function} errCb
66
+ * @param {Object} opt
67
+ * @param {Object} opt.replaceErrCb 直接替换回调函数
64
68
  */
65
- export function setAxResponse(cb, errCb) {
69
+ export function setAxResponse(cb, errCb, opt = {}) {
66
70
  temp.axiosList?.forEach((_ax) => {
67
- _ax.interceptors.response.use(
68
- cb,
69
- errCb ||
70
- ((error) => {
71
- console.error("Error axios response: ", error);
72
- return Promise.reject(error);
73
- }),
74
- );
71
+ _ax.interceptors.response.use(cb, handleErrCb(errCb, { logPrefix: "Error axios response: ", ...opt }));
75
72
  });
76
73
  }
77
74
 
75
+ /**
76
+ * 处理错误回调函数
77
+ * @param {Function} errCb
78
+ * @param {Object} opt
79
+ * @param {Object} opt.replaceErrCb 直接替换回调函数
80
+ * @returns
81
+ */
82
+ export function handleErrCb(errCb, opt) {
83
+ const { replaceErrCb, logPrefix } = opt || {};
84
+ const isFn = typeof errCb === "function";
85
+
86
+ if (replaceErrCb && isFn) {
87
+ return errCb;
88
+ }
89
+
90
+ return (error) => {
91
+ if (axios.isCancel(error)) {
92
+ console.info("axios 请求已取消:", error);
93
+ return Promise.reject(error);
94
+ }
95
+ console.error(logPrefix, error);
96
+ return isFn ? errCb() : Promise.reject(error);
97
+ };
98
+ }
99
+
78
100
  /**
79
101
  * 设置 axios.defaults
80
102
  * @param {string} key
@@ -129,4 +151,6 @@ export function getCancelTokenSource() {
129
151
  return axios.CancelToken.source();
130
152
  }
131
153
 
154
+ export { axios };
155
+
132
156
  export default axios;
package/src/data-model.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash";
2
- import axios from "axios";
2
+ import axios from "./axios";
3
3
 
4
4
  import { objToFormData, formDataToObj, _$Temp, setDefaultAxios, setDefaultErrMsg, setNetworkErrMsg } from "./utils";
5
5
 
@@ -458,6 +458,10 @@ class DataModel {
458
458
  }
459
459
 
460
460
  handleRes(response, resolve, reject) {
461
+ if (axios.isCancel(response)) {
462
+ console.info("errorHandler axios.isCancel", response);
463
+ return;
464
+ }
461
465
  if (this.isResponse) {
462
466
  resolve(response);
463
467
  return;
@@ -500,6 +504,10 @@ class DataModel {
500
504
  }
501
505
 
502
506
  errorHandler(err, reject) {
507
+ if (axios.isCancel(err)) {
508
+ console.info("errorHandler axios.isCancel", err);
509
+ return;
510
+ }
503
511
  if (this.isResponse) {
504
512
  reject(err);
505
513
  return;