From e2ad86ca458b092faa520a0aaf89fa90359871d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AC=94=E8=AE=B0=E6=9C=AC=E9=87=8C=E7=9A=84=E6=B0=B8?= =?UTF-8?q?=E5=B9=B3?= Date: Thu, 17 Jul 2025 22:48:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9C=AC=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=86=85=E5=AE=B9=E5=A6=82=E4=B8=8B=20?= =?UTF-8?q?=E5=AE=9A=E7=A8=BF=E4=BA=86=EF=BC=8C=E5=BC=80=E5=A7=8B=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nkebao/src/api/request.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/nkebao/src/api/request.ts b/nkebao/src/api/request.ts index bd7a086a..ee008705 100644 --- a/nkebao/src/api/request.ts +++ b/nkebao/src/api/request.ts @@ -1,7 +1,7 @@ import axios, { AxiosInstance, AxiosRequestConfig, Method, AxiosResponse } from 'axios'; import { Toast } from 'antd-mobile'; -const DEBOUNCE_GAP = 1000; +const DEFAULT_DEBOUNCE_GAP = 1000; const debounceMap = new Map(); const instance: AxiosInstance = axios.create({ @@ -32,11 +32,9 @@ instance.interceptors.response.use( // 分类处理 if (code === 401) { // 未登录或登录失效 - // 可跳转登录页或清除 token localStorage.removeItem('token'); } else if (code === 403) { // 无权限 - // 可做特殊处理 } else if (code === 500) { // 服务端异常 } @@ -49,16 +47,25 @@ instance.interceptors.response.use( } ); +/** + * @param url 接口地址 + * @param data 请求参数 + * @param method 请求方法 + * @param config axios 配置 + * @param debounceGap 防抖时间(毫秒),不传则用默认值 + */ export function request( url: string, data?: any, method: Method = 'GET', - config?: AxiosRequestConfig + config?: AxiosRequestConfig, + debounceGap?: number ): Promise { + const gap = typeof debounceGap === 'number' ? debounceGap : DEFAULT_DEBOUNCE_GAP; const key = `${method}_${url}_${JSON.stringify(data)}`; const now = Date.now(); const last = debounceMap.get(key) || 0; - if (now - last < DEBOUNCE_GAP) { + if (gap > 0 && now - last < gap) { Toast.show({ content: '请求过于频繁,请稍后再试', position: 'top' }); return Promise.reject('请求过于频繁,请稍后再试'); }