diff --git a/packages/axios/src/constant.ts b/packages/axios/src/constant.ts index d6c5a338..e85ded38 100644 --- a/packages/axios/src/constant.ts +++ b/packages/axios/src/constant.ts @@ -3,3 +3,6 @@ export const REQUEST_ID_KEY = 'X-Request-Id'; /** the backend error code key */ export const BACKEND_ERROR_CODE = 'BACKEND_ERROR'; + +/** the request canceled code */ +export const REQUEST_CANCELED_CODE = 'ERR_CANCELED'; diff --git a/packages/axios/src/index.ts b/packages/axios/src/index.ts index c29d9d2b..89a6bf8a 100644 --- a/packages/axios/src/index.ts +++ b/packages/axios/src/index.ts @@ -3,7 +3,7 @@ import type { AxiosResponse, CreateAxiosDefaults, InternalAxiosRequestConfig } f import axiosRetry from 'axios-retry'; import { nanoid } from '@sa/utils'; import { createAxiosConfig, createDefaultOptions, createRetryOptions } from './options'; -import { BACKEND_ERROR_CODE, REQUEST_ID_KEY } from './constant'; +import { BACKEND_ERROR_CODE, REQUEST_CANCELED_CODE, REQUEST_ID_KEY } from './constant'; import type { CustomAxiosRequestConfig, FlatRequestInstance, @@ -178,6 +178,6 @@ export function createFlatRequest({ url: '/system/menu/list', method: 'get', - params + params, + signal }); } diff --git a/src/service/request/index.ts b/src/service/request/index.ts index e640b1d8..211fc403 100644 --- a/src/service/request/index.ts +++ b/src/service/request/index.ts @@ -1,5 +1,5 @@ import type { AxiosResponse, InternalAxiosRequestConfig } from 'axios'; -import { BACKEND_ERROR_CODE, createFlatRequest } from '@sa/axios'; +import { BACKEND_ERROR_CODE, REQUEST_CANCELED_CODE, createFlatRequest } from '@sa/axios'; import { useAuthStore } from '@/store/modules/auth'; import { localStg, sessionStg } from '@/utils/storage'; import { getServiceBaseURL } from '@/utils/service'; @@ -142,7 +142,12 @@ export const request = createFlatRequest = { '2': 'primary' }; +let controller = new AbortController(); + async function getBtnMenuList() { if (!currentMenu.value?.menuId) { return; } + controller.abort(); + controller = new AbortController(); startBtnLoading(); btnData.value = []; - const { data, error } = await fetchGetMenuList({ parentId: currentMenu.value?.menuId, menuType: 'F' }); + const { data, error } = await fetchGetMenuList( + { parentId: currentMenu.value?.menuId, menuType: 'F' }, + controller.signal + ); if (error) return; btnData.value = data || []; endBtnLoading();