框架
版本
Debouncer API 参考
Throttler API 参考
速率限制器 API 参考
队列 API 参考
批处理器 API 参考
批处理器示例

asyncDebounce

函数:asyncDebounce()

ts
function asyncDebounce<TFn>(fn, initialOptions): (...args) => Promise<undefined | ReturnType<TFn>>
function asyncDebounce<TFn>(fn, initialOptions): (...args) => Promise<undefined | ReturnType<TFn>>

定义于:async-debouncer.ts:341

创建一个异步防抖函数,该函数将执行延迟到指定的等待时间之后。 防抖函数仅在等待期已过且没有新调用时才会执行。 如果在等待期内再次调用,计时器将重置并开始新的等待期。

与非异步 Debouncer 不同,此异步版本支持从防抖函数返回值, 使其非常适合 API 调用和其他异步操作,在这些操作中,您希望获得 maybeExecute 调用的结果 而不是在防抖函数内部设置状态变量的结果。

错误处理:

  • 如果提供了 onError 处理程序,它将与错误和防抖器实例一起被调用
  • 如果 throwOnError 为 true(未提供 onError 处理程序时的默认值),则会抛出错误
  • 如果 throwOnError 为 false(提供 onError 处理程序时的默认值),则会吞没错误
  • 可以使用底层的 AsyncDebouncer 实例检查错误状态
  • onError 和 throwOnError 可以一起使用——处理程序将在抛出任何错误之前被调用

类型参数

TFn extends AnyAsyncFunction

参数

fn

TFn

initialOptions

AsyncDebouncerOptions<TFn>

返回

Function

尝试执行防抖函数。 如果已有调用正在进行,则会将其排队。

错误处理:

  • 如果防抖函数抛出错误并且未配置 onError 处理程序, 则此方法将抛出错误。
  • 如果配置了 onError 处理程序,错误将被捕获并传递给处理程序, 并且此方法将返回 undefined。
  • 可以使用 getErrorCount()getIsExecuting() 检查错误状态。

参数

args

...Parameters<TFn>

返回

Promise<undefined | ReturnType<TFn>>

一个 Promise,它解析为函数的返回值,如果发生错误并由 onError 处理,则解析为 undefined

抛出

如果未配置 onError 处理程序,则抛出防抖函数的错误

示例

ts
const debounced = asyncDebounce(async (value: string) => {
  const result = await saveToAPI(value);
  return result; // 返回值被保留
}, {
  wait: 1000,
  onError: (error) => {
    console.error('API 调用失败:', error);
  },
  throwOnError: true // 将同时记录错误并抛出错误
});

// 仅在最后一次调用后 1 秒执行一次
// 直接返回 API 响应
const result = await debounced("third");
const debounced = asyncDebounce(async (value: string) => {
  const result = await saveToAPI(value);
  return result; // 返回值被保留
}, {
  wait: 1000,
  onError: (error) => {
    console.error('API 调用失败:', error);
  },
  throwOnError: true // 将同时记录错误并抛出错误
});

// 仅在最后一次调用后 1 秒执行一次
// 直接返回 API 响应
const result = await debounced("third");