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
Zustandsverwaltung
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);
• TFn erbt von AnyAsyncFunction
new AsyncThrottler<TFn>(fn, initialOptions): AsyncThrottler<TFn>
new AsyncThrottler<TFn>(fn, initialOptions): AsyncThrottler<TFn>
Definiert in: async-throttler.ts:211
TFn
AsyncThrottler<TFn>
fn: TFn;
fn: TFn;
Definiert in: async-throttler.ts:212
key: string;
key: string;
Definiert in: async-throttler.ts:203
options: AsyncThrottlerOptions<TFn>;
options: AsyncThrottlerOptions<TFn>;
Definiert in: async-throttler.ts:204
readonly store: Store<Readonly<AsyncThrottlerState<TFn>>>;
readonly store: Store<Readonly<AsyncThrottlerState<TFn>>>;
Definiert in: async-throttler.ts:200
cancel(): void
cancel(): void
Definiert in: async-throttler.ts:444
Bricht jede ausstehende Ausführung ab oder bricht jede laufende Ausführung ab
void
flush(): Promise<undefined | ReturnType<TFn>>
flush(): Promise<undefined | ReturnType<TFn>>
Definiert in: async-throttler.ts:393
Verarbeitet die aktuelle ausstehende Ausführung sofort
Promise<undefined | ReturnType<TFn>>
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)
Wenn innerhalb der Wartezeit
...Parameters<TFn>
Promise<undefined | ReturnType<TFn>>
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(): void
reset(): void
Definiert in: async-throttler.ts:452
Setzt den Debouncer-Zustand auf seine Standardwerte zurück
void
setOptions(newOptions): void
setOptions(newOptions): void
Definiert in: async-throttler.ts:232
Aktualisiert die Optionen des Async Throttlers
Partial<AsyncThrottlerOptions<TFn>>
void
Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.