function useRateLimitedCallback<TFn>(fn, options): (...args) => boolean
function useRateLimitedCallback<TFn>(fn, options): (...args) => boolean
Definiert in: react-pacer/src/rate-limiter/useRateLimitedCallback.ts:59
Ein React-Hook, der eine ratenbegrenzte Version einer Callback-Funktion erstellt. Dieser Hook ist im Wesentlichen ein Wrapper um die grundlegende rateLimiter-Funktion, die von @tanstack/pacer exportiert wird, aber für React mit reaktiven Optionen und einer stabilen Funktionsreferenz optimiert ist.
Ratenbegrenzung ist ein einfacher "Hard Limit"-Ansatz – sie erlaubt alle Aufrufe, bis das Limit erreicht ist, und blockiert dann nachfolgende Aufrufe, bis das Zeitfenster zurückgesetzt wird. Im Gegensatz zu Throttling oder Debouncing versucht sie nicht, Aufrufe zu verteilen oder intelligent zu kollabieren. Dies kann zu Stoßwellen schneller Ausführungen führen, gefolgt von Perioden, in denen alle Aufrufe blockiert sind.
Der Ratenbegrenzer unterstützt zwei Arten von Fenstern
Für sanftere Ausführungsmuster sollten Sie Folgendes in Betracht ziehen:
Ratenbegrenzung sollte hauptsächlich verwendet werden, wenn Sie strikte Limits erzwingen müssen, wie z. B. API-Ratenlimits oder andere Szenarien, die harte Obergrenzen für die Ausführungsfrequenz erfordern.
Dieser Hook bietet eine einfachere API im Vergleich zu useRateLimiter und ist daher ideal für grundlegende Ratenbegrenzungsanforderungen. Er legt jedoch keine Instanz des zugrunde liegenden RateLimiters offen.
Für fortgeschrittene Anwendungsfälle, die Funktionen wie
Erwägen Sie stattdessen die Verwendung des useRateLimiter Hooks.
• TFn extends AnyFunction
TFn
RateLimiterOptions<TFn>
Funktion
...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.');
}
}
);
Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.