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

asyncDebounce

Funktion: asyncDebounce()

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

Definiert in: async-debouncer.ts:468

Erstellt eine asynchrone Debounce-Funktion, die die Ausführung verzögert, bis nach einer bestimmten Wartezeit. Die Debounce-Funktion wird nur einmal ausgeführt, nachdem der Wartezeitraum ohne weitere Aufrufe verstrichen ist. Wenn sie während des Wartezeitraums erneut aufgerufen wird, wird der Timer zurückgesetzt und ein neuer Wartezeitraum beginnt.

Im Gegensatz zum nicht-asynchronen Debouncer unterstützt diese asynchrone Version die Rückgabe von Werten aus der debounced-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 in einer Zustandsvariable innerhalb der debounced-Funktion wünschen.

Fehlerbehandlung

  • Wenn ein onError-Handler bereitgestellt wird, wird dieser mit dem Fehler und der Debouncer-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".
  • Der Fehlerzustand kann über die zugrundeliegende AsyncDebouncer-Instanz überprüft werden.
  • Sowohl onError als auch throwOnError können zusammen verwendet werden – der Handler wird aufgerufen, bevor ein Fehler ausgelöst wird.

Zustandsverwaltung

  • Verwendet TanStack Store für reaktives Zustandsmanagement
  • Verwenden Sie initialState, um Anfangswerte für die asynchrone Debounce-Funktion 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 canLeadingExecute, Fehleranzahl, Ausführungsstatus und Erfolgs-/Abschlusszählungen
  • Der Zustand kann über asyncDebouncer.store.state zugegriffen werden, wenn Sie die Klasse direkt verwenden
  • Bei Verwendung von Framework-Adaptern (React/Solid) wird auf den Zustand über asyncDebouncer.state zugegriffen

Typparameter

TFn erbt von AnyAsyncFunction

Parameter

fn

TFn

initialOptions

AsyncDebouncerOptions<TFn>

Gibt zurück

Funktion

Versucht, die Debounce-Funktion auszuführen. Wenn ein Aufruf bereits in Bearbeitung ist, wird er in die Warteschlange gestellt.

Fehlerbehandlung

  • Wenn die Debounce-Funktion einen Fehler auslöst und kein onError-Handler konfiguriert ist, wird der Fehler von dieser Methode ausgelöst.
  • Wenn ein onError-Handler konfiguriert ist, werden Fehler abgefangen und an den Handler übergeben, und diese Methode gibt undefined zurück.
  • Der Fehlerzustand kann mit getErrorCount() und getIsExecuting() überprüft werden.

Parameter

args

...Parameters<TFn>

Gibt zurück

Promise<undefined | ReturnType<TFn>>

Ein Promise, das mit dem Rückgabewert der Funktion aufgelöst wird oder undefined, wenn ein Fehler aufgetreten und von onError behandelt wurde

Wirft

Der Fehler der Debounce-Funktion, wenn kein onError-Handler konfiguriert ist

Beispiel

ts
const debounced = asyncDebounce(async (value: string) => {
  const result = await saveToAPI(value);
  return result; // Return value is preserved
}, {
  wait: 1000,
  onError: (error) => {
    console.error('API call failed:', error);
  },
  throwOnError: true // Will both log the error and throw it
});

// Will only execute once, 1 second after the last call
// Returns the API response directly
const result = await debounced("third");
const debounced = asyncDebounce(async (value: string) => {
  const result = await saveToAPI(value);
  return result; // Return value is preserved
}, {
  wait: 1000,
  onError: (error) => {
    console.error('API call failed:', error);
  },
  throwOnError: true // Will both log the error and throw it
});

// Will only execute once, 1 second after the last call
// Returns the API response directly
const result = await debounced("third");
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.