定义于: rate-limiter.ts:143
一个创建速率限制函数的类。
速率限制是一种简单的方法,它允许一个函数在一个时间窗口内执行最多达到一个限制,然后阻止所有后续的调用,直到该窗口过去。这可能导致“爆发式”行为,即所有执行立即发生,然后是完全阻塞。
速率限制器支持两种类型的窗口
为了更平滑的执行模式,请考虑使用
速率限制最适合用于硬性的 API 限制或资源约束。对于 UI 更新或平滑频繁的事件,节流或防抖通常能提供更好的用户体验。
状态管理
const rateLimiter = new RateLimiter(
(id: string) => api.getData(id),
{
limit: 5,
window: 1000,
windowType: 'sliding',
}
);
// Will execute immediately until limit reached, then block
rateLimiter.maybeExecute('123');
const rateLimiter = new RateLimiter(
(id: string) => api.getData(id),
{
limit: 5,
window: 1000,
windowType: 'sliding',
}
);
// Will execute immediately until limit reached, then block
rateLimiter.maybeExecute('123');
• TFn extends AnyFunction
new RateLimiter<TFn>(fn, initialOptions): RateLimiter<TFn>
new RateLimiter<TFn>(fn, initialOptions): RateLimiter<TFn>
定义于: rate-limiter.ts:150
TFn
RateLimiterOptions<TFn>
RateLimiter<TFn>
fn: TFn;
fn: TFn;
定义于: rate-limiter.ts:151
key: string;
key: string;
定义于: rate-limiter.ts:146
options: RateLimiterOptions<TFn>;
options: RateLimiterOptions<TFn>;
定义于: rate-limiter.ts:147
readonly store: Store<Readonly<RateLimiterState>>;
readonly store: Store<Readonly<RateLimiterState>>;
定义于: rate-limiter.ts:144
getMsUntilNextWindow(): number
getMsUntilNextWindow(): number
定义于: rate-limiter.ts:341
返回下一次执行可能性的毫秒数
number
getRemainingInWindow(): number
getRemainingInWindow(): number
定义于: rate-limiter.ts:333
返回当前窗口中剩余允许的执行次数
number
maybeExecute(...args): boolean
maybeExecute(...args): boolean
定义于: rate-limiter.ts:235
尝试在配置的限制内执行速率限制函数。如果当前窗口中的调用次数超过限制,则会拒绝执行。
...Parameters<TFn>
boolean
const rateLimiter = new RateLimiter(fn, { limit: 5, window: 1000 });
// First 5 calls will return true
rateLimiter.maybeExecute('arg1', 'arg2'); // true
// Additional calls within the window will return false
rateLimiter.maybeExecute('arg1', 'arg2'); // false
const rateLimiter = new RateLimiter(fn, { limit: 5, window: 1000 });
// First 5 calls will return true
rateLimiter.maybeExecute('arg1', 'arg2'); // true
// Additional calls within the window will return false
rateLimiter.maybeExecute('arg1', 'arg2'); // false
reset(): void
reset(): void
定义于: rate-limiter.ts:352
重置速率限制器状态
void
setOptions(newOptions): void
setOptions(newOptions): void
定义于: rate-limiter.ts:174
更新速率限制器选项
Partial<RateLimiterOptions<TFn>>
void
您的每周 JavaScript 资讯。每周一免费发送给超过 10 万开发者。