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

AsyncDebouncer

Klasse: AsyncDebouncer<TFn>

Definiert in: async-debouncer.ts:188

Eine Klasse, die eine asynchron verzögerte Funktion erstellt.

Debouncing stellt sicher, dass eine Funktion erst ausgeführt wird, nachdem eine bestimmte Verzögerung seit ihrer letzten Ausführung verstrichen ist. Jede neue Ausführung setzt den Verzögerungstimer zurück. Dies ist nützlich für die Verarbeitung häufiger Ereignisse wie Fenstergrößenänderungen oder Eingabeänderungen, bei denen Sie den Handler erst ausführen möchten, nachdem die Ereignisse aufgehört haben aufzutreten.

Im Gegensatz zu Throttling, das die Ausführung in regelmäßigen Abständen zulässt, verhindert Debouncing jede Ausführung, bis die Funktion für den angegebenen Verzögerungszeitraum nicht mehr aufgerufen wird.

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".
  • Sowohl onError als auch throwOnError können zusammen verwendet werden – der Handler wird aufgerufen, bevor ein Fehler ausgelöst wird.
  • Der Fehlerzustand kann über den zugrunde liegenden Store überprüft werden

Zustandsverwaltung

  • Der Debouncer verwendet einen reaktiven Store für die Zustandsverwaltung
  • Verwenden Sie initialState, um anfängliche Zustands-Werte bereitzustellen, wenn der asynchrone Debouncer erstellt wird
  • Der Zustand umfasst canLeadingExecute, Fehleranzahl, Ausführungsstatus und Erfolgs-/Abschlusszählungen
  • Der Zustand kann über die Eigenschaft store und ihren Getter state zugegriffen werden
  • Der Store ist reaktiv und benachrichtigt Abonnenten über Zustandsänderungen

Beispiel

ts
const asyncDebouncer = new AsyncDebouncer(async (value: string) => {
  const results = await searchAPI(value);
  return results; // Return value is preserved
}, {
  wait: 500,
  onError: (error) => {
    console.error('Search failed:', error);
  }
});

// Called on each keystroke but only executes after 500ms of no typing
// Returns the API response directly
const results = await asyncDebouncer.maybeExecute(inputElement.value);
const asyncDebouncer = new AsyncDebouncer(async (value: string) => {
  const results = await searchAPI(value);
  return results; // Return value is preserved
}, {
  wait: 500,
  onError: (error) => {
    console.error('Search failed:', error);
  }
});

// Called on each keystroke but only executes after 500ms of no typing
// Returns the API response directly
const results = await asyncDebouncer.maybeExecute(inputElement.value);

Typparameter

TFn erbt von AnyAsyncFunction

Konstruktoren

new AsyncDebouncer()

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

Definiert in: async-debouncer.ts:200

Parameter

fn

TFn

initialOptions

AsyncDebouncerOptions<TFn>

Gibt zurück

AsyncDebouncer<TFn>

Eigenschaften

fn

ts
fn: TFn;
fn: TFn;

Definiert in: async-debouncer.ts:201


key

ts
key: string;
key: string;

Definiert in: async-debouncer.ts:192


optionen

ts
options: AsyncDebouncerOptions<TFn>;
options: AsyncDebouncerOptions<TFn>;

Definiert in: async-debouncer.ts:193


store

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

Definiert in: async-debouncer.ts:189

Methoden

cancel()

ts
cancel(): void
cancel(): void

Definiert in: async-debouncer.ts:410

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-debouncer.ts:362

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-debouncer.ts:282

Versucht, die verzögerte Funktion auszuführen. Wenn ein Aufruf bereits läuft, wird er in die Warteschlange gestellt.

Fehlerbehandlung

  • Wenn die verzögerte 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 verzögerten Funktion, wenn kein onError-Handler konfiguriert ist


reset()

ts
reset(): void
reset(): void

Definiert in: async-debouncer.ts:419

Setzt den Debouncer-Zustand auf seine Standardwerte zurück

Gibt zurück

void


setOptions()

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

Definiert in: async-debouncer.ts:222

Aktualisiert die Optionen des asynchronen Debouncers

Parameter

newOptions

Partial<AsyncDebouncerOptions<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.