function asyncThrottle<TFn>(fn, initialOptions): (...args) => Promise<undefined | ReturnType<TFn>>
function asyncThrottle<TFn>(fn, initialOptions): (...args) => Promise<undefined | ReturnType<TFn>>
创建一个异步节流函数,该函数限制函数的执行频率。 即使多次调用,节流函数在每个等待期内最多执行一次。 如果在执行期间调用,它将等待执行完成后再安排下一次调用。
与非异步 Throttler 不同,此异步版本支持从节流函数返回值, 使其非常适合 API 调用和其他异步操作,在这些操作中,您希望获得 maybeExecute 调用的结果 而不是在节流函数内部设置状态变量的结果。
错误处理:
• TFn extends AnyAsyncFunction
TFn
Function
尝试执行节流函数。 如果已有调用正在进行,则根据 wait 选项,它可能会被阻塞或排队。
错误处理:
...Parameters<TFn>
Promise<undefined | ReturnType<TFn>>
一个 Promise,它解析为函数的返回值,如果发生错误并由 onError 处理,则解析为 undefined
如果未配置 onError 处理程序,则抛出节流函数的错误
const throttled = asyncThrottle(async (value: string) => {
const result = await saveToAPI(value);
return result; // 返回值被保留
}, {
wait: 1000,
onError: (error) => {
console.error('API 调用失败:', error);
}
});
// 这将每秒最多执行一次
// 直接返回 API 响应
const result = await throttled(inputElement.value);
const throttled = asyncThrottle(async (value: string) => {
const result = await saveToAPI(value);
return result; // 返回值被保留
}, {
wait: 1000,
onError: (error) => {
console.error('API 调用失败:', error);
}
});
// 这将每秒最多执行一次
// 直接返回 API 响应
const result = await throttled(inputElement.value);