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

AsyncThrottler

Klasse: AsyncThrottler<TFn>

Definiert in: async-throttler.ts:199

Eine Klasse, die eine asynchrone gedrosselte Funktion erstellt.

Drosselung begrenzt, wie oft eine Funktion ausgeführt werden kann, und erlaubt nur eine Ausführung innerhalb eines bestimmten Zeitfensters. Im Gegensatz zum Debouncing, das den Verzögerungs-Timer bei jedem Aufruf zurücksetzt, stellt die Drosselung sicher, dass die Funktion unabhängig davon, wie oft sie aufgerufen wird, in regelmäßigen Abständen ausgeführt wird.

Im Gegensatz zum nicht-asynchronen Throttler unterstützt diese asynchrone Version die Rückgabe von Werten aus der gedrosselten Funktion, was sie ideal für API-Aufrufe und andere asynchrone Operationen macht, bei denen Sie das Ergebnis des maybeExecute-Aufrufs anstelle des Setzens des Ergebnisses auf einer Zustandsvariable innerhalb der gedrosselten Funktion wünschen.

Dies ist nützlich für die Ratenbegrenzung von API-Aufrufen, die Verarbeitung von Scroll-/Resize-Ereignissen oder jedes Szenario, in dem Sie eine maximale Ausführungshäufigkeit sicherstellen möchten.

Fehlerbehandlung

  • Wenn ein onError-Handler bereitgestellt wird, wird dieser mit dem Fehler und der Throttler-Instanz aufgerufen.
  • Wenn throwOnError auf true gesetzt ist (Standardwert, wenn kein onError-Handler bereitgestellt wird), wird der Fehler ausgelöst.
  • Wenn throwOnError auf false gesetzt ist (Standardwert, wenn ein onError-Handler bereitgestellt wird), wird der Fehler "verschluckt".
  • Sowohl onError als auch throwOnError können zusammen verwendet werden – der Handler wird aufgerufen, bevor ein Fehler ausgelöst wird.
  • Der Fehlerzustand kann über die zugrunde liegende AsyncThrottler-Instanz überprüft werden.

Zustandsverwaltung

  • Verwendet TanStack Store für reaktives Zustandsmanagement
  • Verwenden Sie initialState, um anfängliche Zustandswerte beim Erstellen des Async Throttlers bereitzustellen
  • Verwenden Sie den Callback onSuccess, um auf die erfolgreiche Ausführung der Funktion zu reagieren und benutzerdefinierte Logik zu implementieren
  • Verwenden Sie den Callback onError, um auf Fehler bei der Ausführung der Funktion zu reagieren und benutzerdefiniertes Fehlerhandling zu implementieren
  • Verwenden Sie den Callback onSettled, um auf den Abschluss der Ausführung der Funktion (Erfolg oder Fehler) zu reagieren und benutzerdefinierte Logik zu implementieren
  • Der Zustand umfasst Fehlerzähler, Ausführungsstatus, letzte Ausführungszeit und Erfolgs-/Abschlusszähler
  • Der Zustand kann über asyncThrottler.store.state aufgerufen werden, wenn die Klasse direkt verwendet wird
  • Bei der Verwendung von Framework-Adaptern (React/Solid) wird der Zustand von asyncThrottler.state aufgerufen

Beispiel

ts
const throttler = new AsyncThrottler(async (value: string) => {
  const result = await saveToAPI(value);
  return result; // Return value is preserved
}, {
  wait: 1000,
  onError: (error) => {
    console.error('API call failed:', error);
  }
});

// Will only execute once per second no matter how often called
// Returns the API response directly
const result = await throttler.maybeExecute(inputElement.value);
const throttler = new AsyncThrottler(async (value: string) => {
  const result = await saveToAPI(value);
  return result; // Return value is preserved
}, {
  wait: 1000,
  onError: (error) => {
    console.error('API call failed:', error);
  }
});

// Will only execute once per second no matter how often called
// Returns the API response directly
const result = await throttler.maybeExecute(inputElement.value);

Typparameter

TFn erbt von AnyAsyncFunction

Konstruktoren

new AsyncThrottler()

ts
new AsyncThrottler<TFn>(fn, initialOptions): AsyncThrottler<TFn>
new AsyncThrottler<TFn>(fn, initialOptions): AsyncThrottler<TFn>

Definiert in: async-throttler.ts:211

Parameter

fn

TFn

initialOptions

AsyncThrottlerOptions<TFn>

Gibt zurück

AsyncThrottler<TFn>

Eigenschaften

fn

ts
fn: TFn;
fn: TFn;

Definiert in: async-throttler.ts:212


key

ts
key: string;
key: string;

Definiert in: async-throttler.ts:203


optionen

ts
options: AsyncThrottlerOptions<TFn>;
options: AsyncThrottlerOptions<TFn>;

Definiert in: async-throttler.ts:204


store

ts
readonly store: Store<Readonly<AsyncThrottlerState<TFn>>>;
readonly store: Store<Readonly<AsyncThrottlerState<TFn>>>;

Definiert in: async-throttler.ts:200

Methoden

cancel()

ts
cancel(): void
cancel(): void

Definiert in: async-throttler.ts:444

Bricht jede ausstehende Ausführung ab oder bricht jede laufende Ausführung ab

Gibt zurück

void


flush()

ts
flush(): Promise<undefined | ReturnType<TFn>>
flush(): Promise<undefined | ReturnType<TFn>>

Definiert in: async-throttler.ts:393

Verarbeitet die aktuelle ausstehende Ausführung sofort

Gibt zurück

Promise<undefined | ReturnType<TFn>>


maybeExecute()

ts
maybeExecute(...args): Promise<undefined | ReturnType<TFn>>
maybeExecute(...args): Promise<undefined | ReturnType<TFn>>

Definiert in: async-throttler.ts:300

Versucht, die gedrosselte Funktion auszuführen. Das Ausführungsverhalten hängt von den Throttler-Optionen ab

  • Wenn seit der letzten Ausführung genügend Zeit vergangen ist (>= Wartezeit)

    • Mit leading=true: Wird sofort ausgeführt
    • Mit leading=false: Wartet auf die nächste nachfolgende Ausführung
  • Wenn innerhalb der Wartezeit

    • Mit trailing=true: Plant die Ausführung für das Ende der Wartezeit
    • Mit trailing=false: Verwirft die Ausführung

Parameter

args

...Parameters<TFn>

Gibt zurück

Promise<undefined | ReturnType<TFn>>

Beispiel

ts
const throttled = new AsyncThrottler(fn, { wait: 1000 });

// First call executes immediately
await throttled.maybeExecute('a', 'b');

// Call during wait period - gets throttled
await throttled.maybeExecute('c', 'd');
const throttled = new AsyncThrottler(fn, { wait: 1000 });

// First call executes immediately
await throttled.maybeExecute('a', 'b');

// Call during wait period - gets throttled
await throttled.maybeExecute('c', 'd');

reset()

ts
reset(): void
reset(): void

Definiert in: async-throttler.ts:452

Setzt den Debouncer-Zustand auf seine Standardwerte zurück

Gibt zurück

void


setOptions()

ts
setOptions(newOptions): void
setOptions(newOptions): void

Definiert in: async-throttler.ts:232

Aktualisiert die Optionen des Async Throttlers

Parameter

newOptions

Partial<AsyncThrottlerOptions<TFn>>

Gibt zurück

void

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.