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

asyncThrottle

Funktion: asyncThrottle()

ts
function asyncThrottle<TFn>(fn, initialOptions): (...args) => Promise<undefined | ReturnType<TFn>>
function asyncThrottle<TFn>(fn, initialOptions): (...args) => Promise<undefined | ReturnType<TFn>>

Definiert in: async-throttler.ts:500

Erstellt eine asynchrone, gedrosselte Funktion, die begrenzt, wie oft die Funktion ausgeführt werden kann. Die gedrosselte Funktion wird höchstens einmal pro Wartezeit ausgeführt, auch wenn sie mehrmals aufgerufen wird. Wenn sie während der Ausführung aufgerufen wird, wartet sie, bis die Ausführung abgeschlossen ist, bevor sie den nächsten Aufruf plant.

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.

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 bei der Erstellung 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 Fehleranzahl, Ausführungsstatus, letzte Ausführungszeit und Erfolgs-/Abschlusszählungen.
  • Auf den Zustand kann über die Eigenschaft store.state der zugrunde liegenden AsyncThrottler-Instanz zugegriffen werden.
  • Bei Verwendung von Framework-Adaptern (React/Solid) wird der Zustand aus der `state`-Eigenschaft des Hooks abgerufen

Typparameter

TFn erbt von AnyAsyncFunction

Parameter

fn

TFn

initialOptions

AsyncThrottlerOptions<TFn>

Gibt zurück

Funktion

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');

Beispiel

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

// This will execute at most once per second
// Returns the API response directly
const result = await throttled(inputElement.value);
const throttled = asyncThrottle(async (value: string) => {
  const result = await saveToAPI(value);
  return result; // Return value is preserved
}, {
  wait: 1000,
  onError: (error) => {
    console.error('API call failed:', error);
  }
});

// This will execute at most once per second
// Returns the API response directly
const result = await throttled(inputElement.value);
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.