function useAsyncRateLimitedCallback<TFn>(fn, options): (...args) => Promise<ReturnType<TFn>>
function useAsyncRateLimitedCallback<TFn>(fn, options): (...args) => Promise<ReturnType<TFn>>
定义于: react-pacer/src/async-rate-limiter/useAsyncRateLimitedCallback.ts:59
一个 React 钩子,用于创建一个异步回调函数的速率限制版本。这个钩子是 useAsyncRateLimiter 钩子方便的封装,它为在 React 组件中使用提供了一个稳定、异步速率限制的函数引用。
异步速率限制是一种对异步函数的“硬限制”方法:它允许所有调用直到达到限制,然后阻止(拒绝)后续的调用,直到窗口重置。与节流或防抖不同,它不尝试间隔或合并调用。这可能导致快速执行的爆发,然后是所有调用都被阻止的时期。
异步速率限制器支持两种类型的窗口
为了更平滑的执行模式,请考虑
异步速率限制主要应用于您需要强制执行严格的异步操作限制时,例如 API 速率限制或其他需要对执行频率进行硬性限制的场景。
与 useAsyncRateLimiter 相比,这个钩子提供了一个更简单的 API,使其成为基本异步速率限制需求的理想选择。但是,它不暴露底层的 AsyncRateLimiter 实例。
对于需要以下功能的进阶用法
考虑改用 useAsyncRateLimiter 钩子。
• TFn extends AnyAsyncFunction
TFn
AsyncRateLimiterOptions<TFn>
Function
...Parameters<TFn>
Promise<ReturnType<TFn>>
// Rate limit async API calls to maximum 5 calls per minute with a sliding window
const makeApiCall = useAsyncRateLimitedCallback(
async (data: ApiData) => {
return fetch('/api/endpoint', { method: 'POST', body: JSON.stringify(data) });
},
{
limit: 5,
window: 60000, // 1 minute
windowType: 'sliding',
onReject: () => {
console.warn('API rate limit reached. Please wait before trying again.');
}
}
);
// Rate limit async API calls to maximum 5 calls per minute with a sliding window
const makeApiCall = useAsyncRateLimitedCallback(
async (data: ApiData) => {
return fetch('/api/endpoint', { method: 'POST', body: JSON.stringify(data) });
},
{
limit: 5,
window: 60000, // 1 minute
windowType: 'sliding',
onReject: () => {
console.warn('API rate limit reached. Please wait before trying again.');
}
}
);
您的每周 JavaScript 资讯。每周一免费发送给超过 10 万开发者。