function rateLimit<TFn>(fn, initialOptions): (...args) => boolean
function rateLimit<TFn>(fn, initialOptions): (...args) => boolean
Definiert in: rate-limiter.ts:404
Erstellt eine ratenbegrenzte Funktion, die die bereitgestellte Funktion bis zu einer maximalen Anzahl von Ausführungen innerhalb eines Zeitfensters ausführt.
Beachten Sie, dass Ratenbegrenzung eine einfachere Form der Ausführungskontrolle darstellt als Throttling oder Debouncing.
Der Ratenbegrenzer unterstützt zwei Arten von Fenstern
Zustandsverwaltung
Erwägen Sie die Verwendung von throttle() oder debounce(), wenn Sie eine intelligentere Ausführungskontrolle benötigen. Verwenden Sie Ratenbegrenzung, wenn Sie speziell ein hartes Limit für die Anzahl der Ausführungen innerhalb eines Zeitraums durchsetzen müssen.
• TFn erweitert AnyFunction
TFn
RateLimiterOptions<TFn>
Funktion
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
// Rate limit to 5 calls per minute with a sliding window
const rateLimited = rateLimit(makeApiCall, {
limit: 5,
window: 60000,
windowType: 'sliding',
onReject: (rateLimiter) => {
console.log(`Rate limit exceeded. Try again in ${rateLimiter.getMsUntilNextWindow()}ms`);
}
});
// First 5 calls will execute immediately
// Additional calls will be rejected until the minute window resets
rateLimited();
// For more even execution, consider using throttle instead:
const throttled = throttle(makeApiCall, { wait: 12000 }); // One call every 12 seconds
// Rate limit to 5 calls per minute with a sliding window
const rateLimited = rateLimit(makeApiCall, {
limit: 5,
window: 60000,
windowType: 'sliding',
onReject: (rateLimiter) => {
console.log(`Rate limit exceeded. Try again in ${rateLimiter.getMsUntilNextWindow()}ms`);
}
});
// First 5 calls will execute immediately
// Additional calls will be rejected until the minute window resets
rateLimited();
// For more even execution, consider using throttle instead:
const throttled = throttle(makeApiCall, { wait: 12000 }); // One call every 12 seconds
Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.