function useRateLimiter<TFn>(fn, options): RateLimiter<TFn>
function useRateLimiter<TFn>(fn, options): RateLimiter<TFn>
定义于:react-pacer/src/rate-limiter/useRateLimiter.ts:55
一个低级别的 React 钩子,用于创建一个 RateLimiter 实例来强制执行函数执行的速率限制。
此钩子设计灵活且与状态管理无关——它仅返回一个速率限制器实例,您可以将其与任何状态管理解决方案(useState、Redux、Zustand、Jotai 等)集成。
速率限制是一种简单的“硬限制”方法,它允许执行直到在时间窗口内达到最大计数,然后阻止所有后续调用,直到窗口重置。与节流或防抖不同,它不会尝试智能地隔开或折叠执行。
速率限制器支持两种类型的窗口:
对于更平滑的执行模式:
该钩子返回一个包含以下内容的对象:
• TFn extends AnyFunction
TFn
RateLimiterOptions<TFn>
RateLimiter<TFn>
// 基本速率限制 - 滑动窗口内每分钟最多调用 5 次
const { maybeExecute } = useRateLimiter(apiCall, {
limit: 5,
window: 60000,
windowType: 'sliding',
});
// 监控速率限制状态
const handleClick = () => {
const remaining = getRemainingInWindow();
if (remaining > 0) {
maybeExecute(data);
} else {
showRateLimitWarning();
}
};
// 基本速率限制 - 滑动窗口内每分钟最多调用 5 次
const { maybeExecute } = useRateLimiter(apiCall, {
limit: 5,
window: 60000,
windowType: 'sliding',
});
// 监控速率限制状态
const handleClick = () => {
const remaining = getRemainingInWindow();
if (remaining > 0) {
maybeExecute(data);
} else {
showRateLimitWarning();
}
};