mmjs-core
Version:
mmjs-core hooks component vue
2 lines (1 loc) • 1.64 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("axios");function j(u){const l=new Map;let s=null,a=null;function r(c){const{method:e,url:t,params:n,data:i}=c??{};let o=[e==null?void 0:e.toUpperCase(),t];return n&&Object.keys(n).length&&o.push(`params:${JSON.stringify(n)}`),i&&(typeof i=="object"?o.push(`data:${JSON.stringify(i)}`):o.push(`data:${i}`)),o.join("|")}function d(c){return c.allowDuplicate!==void 0?!c.allowDuplicate:u!=null&&u.shouldAllowDuplicate?!u.shouldAllowDuplicate(c,l):!0}function y(c){p(),s=c.interceptors.request.use(e=>{const t=r(e);if(l.has(t)&&d(e)){const n=l.get(t);n==null||n.cancel(`取消重复请求: ${t}`),l.delete(t)}return e.cancelToken=new f.CancelToken(n=>{l.set(t,{cancel:n,timestamp:Date.now()})}),e}),a=c.interceptors.response.use(function(e){if(typeof e=="object"&&(e!=null&&e.hasOwnProperty("config"))){const t=r(e.config);l.delete(t)}return e},e=>{if(f.isCancel(e))return console.log("请求被取消:",e.message),Promise.reject({isCancelled:!0,message:e.message,error:e});if(typeof e=="object"&&(e!=null&&e.hasOwnProperty("config"))){const t=r(e.config);l.delete(t)}return Promise.reject(e)})}function p(){s!==null&&a!==null&&(f.interceptors.request.eject(s),f.interceptors.response.eject(a),s=null,a=null)}function g(c="取消所有未完成请求"){l.forEach(({cancel:e},t)=>{e(`${c}: ${t}`),l.delete(t)})}function h(c,e="取消指定请求"){l.forEach((t,n)=>{c(n,t)&&(t.cancel(`${e}: ${n}`),l.delete(n))})}return{pendingRequests:l,useService:y,cancelAllPendingRequests:g,cancelRequest:h,clearInterceptors:p}}exports.useAxiosCancellation=j;