一个创建异步节流函数的类。
节流限制函数的执行频率,在指定的时间窗口内只允许一次执行。 与每次调用都会重置延迟计时器的防抖不同,节流确保函数以固定的时间间隔执行,无论调用频率如何。
与非异步 Throttler 不同,此异步版本支持从节流函数返回值, 使其非常适合 API 调用和其他异步操作,在这些操作中,您希望获得 maybeExecute 调用的结果 而不是在节流函数内部设置状态变量的结果。
这对于限制 API 调用速率、处理滚动/调整大小事件或任何需要确保最大执行频率的场景非常有用。
错误处理:
const throttler = new AsyncThrottler(async (value: string) => {
const result = await saveToAPI(value);
return result; // 返回值被保留
}, {
wait: 1000,
onError: (error) => {
console.error('API 调用失败:', error);
}
});
// 无论调用频率如何,每秒仅执行一次
// 直接返回 API 响应
const result = await throttler.maybeExecute(inputElement.value);
const throttler = new AsyncThrottler(async (value: string) => {
const result = await saveToAPI(value);
return result; // 返回值被保留
}, {
wait: 1000,
onError: (error) => {
console.error('API 调用失败:', error);
}
});
// 无论调用频率如何,每秒仅执行一次
// 直接返回 API 响应
const result = await throttler.maybeExecute(inputElement.value);
• TFn extends AnyAsyncFunction
new AsyncThrottler<TFn>(fn, initialOptions): AsyncThrottler<TFn>
new AsyncThrottler<TFn>(fn, initialOptions): AsyncThrottler<TFn>
TFn
AsyncThrottler<TFn>
cancel(): void
cancel(): void
取消任何待处理的执行或中止任何正在进行的执行
void
getEnabled(): boolean
getEnabled(): boolean
返回节流器的当前启用状态
boolean
getErrorCount(): number
getErrorCount(): number
返回函数出错的次数
number
getIsExecuting(): boolean
getIsExecuting(): boolean
返回当前执行状态
boolean
getIsPending(): boolean
getIsPending(): boolean
返回当前待处理状态
boolean
getLastExecutionTime(): number
getLastExecutionTime(): number
返回上次执行时间
number
getLastResult(): undefined | ReturnType<TFn>
getLastResult(): undefined | ReturnType<TFn>
返回防抖函数的最后结果
undefined | ReturnType<TFn>
getNextExecutionTime(): number
getNextExecutionTime(): number
返回下次执行时间
number
getOptions(): AsyncThrottlerOptions<TFn>
getOptions(): AsyncThrottlerOptions<TFn>
返回当前选项
getSettleCount(): number
getSettleCount(): number
返回函数已完成(完成或出错)的次数
number
getSuccessCount(): number
getSuccessCount(): number
返回函数已成功执行的次数
number
getWait(): number
getWait(): number
返回当前等待时间(以毫秒为单位)
number
maybeExecute(...args): Promise<undefined | ReturnType<TFn>>
maybeExecute(...args): Promise<undefined | ReturnType<TFn>>
尝试执行节流函数。 如果已有调用正在进行,则根据 wait 选项,它可能会被阻塞或排队。
错误处理:
...Parameters<TFn>
Promise<undefined | ReturnType<TFn>>
一个 Promise,它解析为函数的返回值,如果发生错误并由 onError 处理,则解析为 undefined
如果未配置 onError 处理程序,则抛出节流函数的错误
setOptions(newOptions): void
setOptions(newOptions): void
更新节流器选项
Partial<AsyncThrottlerOptions<TFn>>
void