Framework
Version
Debouncer API Referenz
Throttler API Referenz
Rate Limiter API Referenz
Queue API Referenz
Batcher API Referenz

useRateLimitedCallback

Funktion: useRateLimitedCallback()

ts
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

  • 'fixed': Ein striktes Fenster, das nach Ablauf des Zeitfensters zurückgesetzt wird. Alle Ausführungen innerhalb des Fensters zählen für das Limit, und das Fenster wird nach Ablauf der Periode vollständig zurückgesetzt.
  • 'sliding': Ein rollierendes Fenster, das Ausführungen ermöglicht, sobald ältere abgelaufen sind. Dies sorgt für eine konsistentere Ausführungsrate im Laufe der Zeit.

Für sanftere Ausführungsmuster sollten Sie Folgendes in Betracht ziehen:

  • useThrottledCallback: Wenn Sie eine konsistente Abstandsregelung zwischen den Ausführungen wünschen (z. B. UI-Updates)
  • useDebouncedCallback: Wenn Sie schnelle Aufrufe zu einer einzigen Ausführung zusammenfassen möchten (z. B. Suchleiste)

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

  • Manuelle Abbrechung
  • Zugriff auf Ausführungszähler
  • Benutzerdefinierte useCallback-Abhängigkeiten

Erwägen Sie stattdessen die Verwendung des useRateLimiter Hooks.

Typparameter

TFn extends AnyFunction

Parameter

fn

TFn

optionen

RateLimiterOptions<TFn>

Gibt zurück

Funktion

Parameter

args

...Parameters<TFn>

Gibt zurück

boolean

Beispiel

tsx
// 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.');
    }
  }
);
Unsere Partner
Code Rabbit
Unkey
Bytes abonnieren

Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.

Bytes

Kein Spam. Jederzeit kündbar.

Bytes abonnieren

Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.

Bytes

Kein Spam. Jederzeit kündbar.