function useRateLimitedCallback<TFn>(fn, options): (...args) => boolean
function useRateLimitedCallback<TFn>(fn, options): (...args) => boolean
定义于:react-pacer/src/rate-limiter/useRateLimitedCallback.ts:59
一个 React hook,用于创建一个回调函数的限流版本。此 hook 本质上是 `@tanstack/pacer` 中导出的基本 `rateLimiter` 函数的包装器,但针对 React 进行了优化,提供了响应式选项和稳定的函数引用。
限流是一种简单的“硬限制”方法——它允许所有调用直到达到限制,然后阻止后续调用,直到窗口重置。与节流或防抖不同,它不尝试对调用进行间隔或智能合并。这可能导致快速执行的爆发,随后是所有调用都被阻止的时期。
速率限制器支持两种类型的窗口
为了更平滑的执行模式,请考虑使用
限流主要用于需要强制执行严格限制的场景,例如 API 限流或其他需要对执行频率设置硬性上限的场景。
与 `useRateLimiter` hook 相比,此 hook 提供了更简单的 API,使其成为基本限流需求的理想选择。但是,它不暴露底层的 RateLimiter 实例。
对于需要以下功能的进阶用法
请考虑改用 `useRateLimiter` hook。
• TFn extends AnyFunction
TFn
RateLimiterOptions<TFn>
Function
...Parameters<TFn>
boolean
// Rate limit API calls to maximum 5 calls per minute with a sliding window
const makeApiCall = useRateLimitedCallback(
(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 API calls to maximum 5 calls per minute with a sliding window
const makeApiCall = useRateLimitedCallback(
(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 万开发者。