@choerodon/master
Version:
A package of Master for Choerodon platform.
51 lines (41 loc) • 1.8 kB
JavaScript
import axios from 'axios';
import get from 'lodash/get';
import { axiosRoutesCancel } from "../instances";
import getMark from "../utils/getMark";
export function routeCancelRequestSuccessInterceptor(config) {
var tempConfig = config;
var enabledCancelRoute = get(tempConfig, 'enabledCancelRoute');
if (enabledCancelRoute) {
var cancelRouteKey = (tempConfig === null || tempConfig === void 0 ? void 0 : tempConfig.cancelCacheKey) || getMark(config);
var CancelToken = axios.CancelToken;
var source = CancelToken.source();
tempConfig.cancelToken = source.token; // 将config赋值cancelCacheKey,避免了后续transformRequest重写了params会导致response拦截器里头getMark获取到的标识会和本次的不一样
tempConfig.cancelCacheKey = cancelRouteKey;
axiosRoutesCancel.set(cancelRouteKey, {
cancel: source.cancel,
name: cancelRouteKey // routePath: window.location.hash.split('?')[0].replace(/#/, ''),
});
}
return tempConfig;
}
export function routeCancelResponseSuccessInterceptor(response) {
var config = get(response, 'config');
var enabledCancelRoute = config.enabledCancelRoute;
var cancelCacheKey = config.cancelCacheKey || getMark(config);
if (enabledCancelRoute) {
axiosRoutesCancel["delete"](cancelCacheKey);
}
return response;
}
export function routeCancelResponseFailedInterceptor(error) {
var config = error.config;
var enabledCancelRoute = get(config, 'enabledCancelRoute');
var cancelCacheKey = get(config, 'cancelCacheKey') || getMark(config);
if (enabledCancelRoute) {
axiosRoutesCancel["delete"](cancelCacheKey);
} // 如果是主动取消了请求,做个标识
if (axios.isCancel(error)) {
return new Promise(function () {});
}
return Promise.reject(error);
}