function useAsyncRateLimitedCallback<TFn>(fn, options): (...args) => Promise<ReturnType<TFn>>
function useAsyncRateLimitedCallback<TFn>(fn, options): (...args) => Promise<ReturnType<TFn>>
Definiert in: react-pacer/src/async-rate-limiter/useAsyncRateLimitedCallback.ts:59
Ein React-Hook, der eine ratenbegrenzte Version einer asynchronen Callback-Funktion erstellt. Dieser Hook ist ein praktischer Wrapper um den Hook useAsyncRateLimiter und stellt eine stabile, asynchron ratenbegrenzte Funktionsreferenz für die Verwendung in React-Komponenten bereit.
Asynchrone Ratenbegrenzung ist ein "Hard Limit"-Ansatz für asynchrone Funktionen: Sie erlaubt alle Aufrufe bis zum Erreichen des Limits und blockiert dann (lehnt ab) nachfolgende Aufrufe, bis das Fenster zurückgesetzt wird. Im Gegensatz zu Throttling oder Debouncing versucht sie nicht, Aufrufe zu verteilen oder zusammenzufassen. Dies kann zu Bursts schneller Ausführungen führen, gefolgt von Perioden, in denen alle Aufrufe blockiert sind.
Der asynchrone Ratenbegrenzer unterstützt zwei Arten von Fenstern
Für flüssigere Ausführungsmuster sollten Sie in Betracht ziehen:
Asynchrone Ratenbegrenzung sollte hauptsächlich verwendet werden, wenn Sie strenge Limits für asynchrone Operationen erzwingen müssen, wie z. B. API-Ratenbegrenzungen oder andere Szenarien, die harte Obergrenzen für die Ausführungsfrequenz erfordern.
Dieser Hook bietet eine einfachere API im Vergleich zu useAsyncRateLimiter, was ihn ideal für grundlegende asynchrone Ratenbegrenzungsbedürfnisse macht. Er gibt jedoch nicht die zugrunde liegende AsyncRateLimiter-Instanz preis.
Für fortgeschrittene Anwendungsfälle, die Funktionen wie
Erwägen Sie stattdessen die Verwendung des Hooks useAsyncRateLimiter.
• TFn extends AnyAsyncFunction
TFn
AsyncRateLimiterOptions<TFn>
Funktion
...Parameters<TFn>
Promise<ReturnType<TFn>>
// Rate limit async API calls to maximum 5 calls per minute with a sliding window
const makeApiCall = useAsyncRateLimitedCallback(
async (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 async API calls to maximum 5 calls per minute with a sliding window
const makeApiCall = useAsyncRateLimitedCallback(
async (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.