Definiert in: rate-limiter.ts:143
Eine Klasse, die eine ratenbegrenzte Funktion erstellt.
Ratenbegrenzung ist ein einfacher Ansatz, der es einer Funktion ermöglicht, bis zu einem bestimmten Limit innerhalb eines Zeitfensters ausgeführt zu werden, und dann alle nachfolgenden Aufrufe blockiert, bis das Fenster abgelaufen ist. Dies kann zu "bursty" Verhalten führen, bei dem alle Ausführungen sofort erfolgen, gefolgt von einer vollständigen Blockierung.
Der Ratenbegrenzer unterstützt zwei Arten von Fenstern
Für reibungslosere Ausführungsmuster sollten Sie erwägen:
Ratenbegrenzung eignet sich am besten für harte API-Limits oder Ressourcenbeschränkungen. Für UI-Updates oder das Glätten häufiger Ereignisse bieten Throttling oder Debouncing normalerweise eine bessere Benutzererfahrung.
Zustandsverwaltung
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 erweitert AnyFunction
new RateLimiter<TFn>(fn, initialOptions): RateLimiter<TFn>
new RateLimiter<TFn>(fn, initialOptions): RateLimiter<TFn>
Definiert in: rate-limiter.ts:150
TFn
RateLimiterOptions<TFn>
RateLimiter<TFn>
fn: TFn;
fn: TFn;
Definiert in: rate-limiter.ts:151
key: string;
key: string;
Definiert in: rate-limiter.ts:146
options: RateLimiterOptions<TFn>;
options: RateLimiterOptions<TFn>;
Definiert in: rate-limiter.ts:147
readonly store: Store<Readonly<RateLimiterState>>;
readonly store: Store<Readonly<RateLimiterState>>;
Definiert in: rate-limiter.ts:144
getMsUntilNextWindow(): number
getMsUntilNextWindow(): number
Definiert in: rate-limiter.ts:341
Gibt die Anzahl der Millisekunden zurück, bis die nächste Ausführung möglich ist
number
getRemainingInWindow(): number
getRemainingInWindow(): number
Definiert in: rate-limiter.ts:333
Gibt die Anzahl der verbleibenden erlaubten Ausführungen im aktuellen Fenster zurück
number
maybeExecute(...args): boolean
maybeExecute(...args): boolean
Definiert in: rate-limiter.ts:235
Versucht, die ratenbegrenzte Funktion auszuführen, wenn sie innerhalb der konfigurierten Grenzen liegt. Die Ausführung wird zurückgewiesen, wenn die Anzahl der Aufrufe im aktuellen Fenster das Limit überschreitet.
...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
Definiert in: rate-limiter.ts:352
Setzt den Zustand des Ratenbegrenzers zurück
void
setOptions(newOptions): void
setOptions(newOptions): void
Definiert in: rate-limiter.ts:174
Aktualisiert die Optionen des Ratenbegrenzers
Partial<RateLimiterOptions<TFn>>
void
Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.