@hzab/data-model 1.7.3 → 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,7 @@
1
+ # @hzab/data-model@1.7.4
2
+
3
+ fix: axios 拦截优化,解决请求取消异常问题
4
+
1
5
  # @hzab/data-model@1.7.3
2
6
 
3
7
  fix: axios 统一
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/data-model",
3
- "version": "1.7.3",
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
package/src/data-model.js CHANGED
@@ -459,7 +459,7 @@ class DataModel {
459
459
 
460
460
  handleRes(response, resolve, reject) {
461
461
  if (axios.isCancel(response)) {
462
- reject(response);
462
+ console.info("errorHandler axios.isCancel", response);
463
463
  return;
464
464
  }
465
465
  if (this.isResponse) {
@@ -504,6 +504,10 @@ class DataModel {
504
504
  }
505
505
 
506
506
  errorHandler(err, reject) {
507
+ if (axios.isCancel(err)) {
508
+ console.info("errorHandler axios.isCancel", err);
509
+ return;
510
+ }
507
511
  if (this.isResponse) {
508
512
  reject(err);
509
513
  return;