Skip to content

接口防抖

sz-admin 提供了接口防抖功能,以优化用户体验。

配置指南

以下是如何在配置文件中启用和设置接口防抖的示例:

yaml
sz:
  debounce:
    # 启用防抖功能
    enabled: true
    # 设置全局防抖时间(单位:毫秒,默认为1000ms)
    global-lock-time: 500
    # 配置是否忽略GET请求的防抖
    ignore-get-method: true

使用场景

1. 自定义特定接口的防抖时间

对于需要特别处理的接口,可以自定义其防抖时间。以下是Java代码示例:

java
public class xxController {    

...

    @Debounce(time = 2000) // 为该接口设置2000毫秒的防抖时间
    public ApiResult create(@RequestBody xxDTO dto) {
        ...
        return ApiResult.success();
    }
...    
}

2. 忽略特定接口的防抖

如果某些接口不需要防抖处理,可以使用@DebounceIgnore注解来忽略。以下是Java代码示例:

java
public class xxController {    

...

    @DebounceIgnore // 忽略该接口的防抖处理
    public ApiResult create(@RequestBody xxDTO dto) {
        ...
        return ApiResult.success();
    }
...    
}

触发效果

假设在“教师编辑”功能中,用户在Form表单中快速连续点击确认按钮,防抖机制的效果如下:

  • 首次点击:系统立即响应用户的点击,触发相应的接口请求。
  • 连续点击:若用户在设定的防抖时间(例如500毫秒)内重复点击确认按钮,系统将显示提示信息:“您的请求过于频繁,请稍后再试!”,并在此期间暂停处理额外的请求。系统会继续等待,直到防抖时间结束后,才会触发下一次有效的请求。

debounce-img