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

AsyncBatcher

Klasse: AsyncBatcher<TValue>

Definiert in: async-batcher.ts:230

Eine Klasse, die Elemente sammelt und sie asynchron in Batches verarbeitet.

Dies ist die asynchrone Version der Batcher-Klasse. Im Gegensatz zur synchronen Version verarbeitet dieser asynchrone Batcher

  • Verarbeitet Promises und gibt Ergebnisse von Stapelausführungen zurück
  • Bietet Fehlerbehandlung mit konfigurierbarem Fehlerverhalten
  • Zählt Erfolgs-, Fehler- und Abschlusszählungen separat
  • Hat eine Zustandsverfolgung, wenn Stapel ausgeführt werden
  • Gibt das Ergebnis der Ausführung der Stapelfunktion zurück

Batching ist eine Technik, um mehrere Operationen zu gruppieren, die als eine einzige Einheit verarbeitet werden.

Der AsyncBatcher bietet eine flexible Möglichkeit, asynchrones Batching mit konfigurierbaren Einstellungen zu implementieren.

  • Maximaler Batch-Größe (Anzahl der Elemente pro Batch)
  • Zeitbasierte Batching (Verarbeitung nach X Millisekunden)
  • Benutzerdefinierte Batch-Verarbeitungslogik über getShouldExecute
  • Event-Callbacks zur Überwachung von Batch-Operationen
  • Fehlerbehandlung für fehlgeschlagene Stapelvorgänge

Fehlerbehandlung

  • Wenn ein onError-Handler bereitgestellt wird, wird er mit dem Fehler, dem Batch fehlgeschlagener Elemente und der Batcher-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 Fehlerstatus kann über die AsyncBatcher-Instanz überprüft werden.

Zustandsverwaltung

  • Verwendet TanStack Store für reaktives Zustandsmanagement
  • Verwenden Sie initialState, um anfängliche Zustandswerte bei der Erstellung des asynchronen Batchers bereitzustellen.
  • Verwenden Sie den Callback onSuccess, um auf erfolgreiche Batch-Ausführungen zu reagieren und benutzerdefinierte Logik zu implementieren.
  • Verwenden Sie den Callback onError, um auf Batch-Ausführungsfehler zu reagieren und benutzerdefinierte Fehlerbehandlung zu implementieren.
  • Verwenden Sie den Callback onSettled, um auf den Abschluss der Batch-Ausführung (Erfolg oder Fehler) zu reagieren und benutzerdefinierte Logik zu implementieren.
  • Verwenden Sie den onExecute-Callback, um auf Batch-Ausführungen zu reagieren und benutzerdefinierte Logik zu implementieren
  • Verwenden Sie den onItemsChange-Callback, um auf das Hinzufügen oder Entfernen von Elementen aus dem Batcher zu reagieren
  • Der Status umfasst die Gesamtzahl der verarbeiteten Elemente, Erfolgs-/Fehlerzählungen und den Ausführungsstatus.
  • Der Status kann über asyncBatcher.store.state abgerufen werden, wenn die Klasse direkt verwendet wird.
  • Bei Verwendung von Framework-Adaptern (React/Solid) wird der Status von asyncBatcher.state abgerufen.

Beispiel

ts
const batcher = new AsyncBatcher<number>(
  async (items) => {
    const result = await processItems(items);
    console.log('Processing batch:', items);
    return result;
  },
  {
    maxSize: 5,
    wait: 2000,
    onSuccess: (result) => console.log('Batch succeeded:', result),
    onError: (error) => console.error('Batch failed:', error)
  }
);

batcher.addItem(1);
batcher.addItem(2);
// After 2 seconds or when 5 items are added, whichever comes first,
// the batch will be processed and the result will be available
// batcher.execute() // manually trigger a batch
const batcher = new AsyncBatcher<number>(
  async (items) => {
    const result = await processItems(items);
    console.log('Processing batch:', items);
    return result;
  },
  {
    maxSize: 5,
    wait: 2000,
    onSuccess: (result) => console.log('Batch succeeded:', result),
    onError: (error) => console.error('Batch failed:', error)
  }
);

batcher.addItem(1);
batcher.addItem(2);
// After 2 seconds or when 5 items are added, whichever comes first,
// the batch will be processed and the result will be available
// batcher.execute() // manually trigger a batch

Typparameter

TValue

Konstruktoren

new AsyncBatcher()

ts
new AsyncBatcher<TValue>(fn, initialOptions): AsyncBatcher<TValue>
new AsyncBatcher<TValue>(fn, initialOptions): AsyncBatcher<TValue>

Definiert in: async-batcher.ts:238

Parameter

fn

(items) => Promise<any>

initialOptions

AsyncBatcherOptions<TValue>

Gibt zurück

AsyncBatcher<TValue>

Eigenschaften

fn()

ts
fn: (items) => Promise<any>;
fn: (items) => Promise<any>;

Definiert in: async-batcher.ts:239

Parameter

items

TValue[]

Gibt zurück

Promise<any>


key

ts
key: string;
key: string;

Definiert in: async-batcher.ts:234


optionen

ts
options: AsyncBatcherOptionsWithOptionalCallbacks<TValue>;
options: AsyncBatcherOptionsWithOptionalCallbacks<TValue>;

Definiert in: async-batcher.ts:235


store

ts
readonly store: Store<Readonly<AsyncBatcherState<TValue>>>;
readonly store: Store<Readonly<AsyncBatcherState<TValue>>>;

Definiert in: async-batcher.ts:231

Methoden

addItem()

ts
addItem(item): void
addItem(item): void

Definiert in: async-batcher.ts:297

Fügt ein Element zum asynchronen Batcher hinzu. Wenn die Batch-Größe erreicht ist, ein Timeout auftritt oder shouldProcess true zurückgibt, wird der Batch verarbeitet.

Parameter

item

TValue

Gibt zurück

void


clear()

ts
clear(): void
clear(): void

Definiert in: async-batcher.ts:398

Entfernt alle Elemente aus dem asynchronen Batcher.

Gibt zurück

void


flush()

ts
flush(): Promise<any>
flush(): Promise<any>

Definiert in: async-batcher.ts:372

Verarbeitet den aktuellen Batch von Elementen sofort.

Gibt zurück

Promise<any>


peekAllItems()

ts
peekAllItems(): TValue[]
peekAllItems(): TValue[]

Definiert in: async-batcher.ts:380

Gibt eine Kopie aller Elemente im asynchronen Batcher zurück.

Gibt zurück

TValue[]


peekFailedItems()

ts
peekFailedItems(): TValue[]
peekFailedItems(): TValue[]

Definiert in: async-batcher.ts:384

Gibt zurück

TValue[]


reset()

ts
reset(): void
reset(): void

Definiert in: async-batcher.ts:405

Setzt den Zustand des asynchronen Batchers auf seine Standardwerte zurück.

Gibt zurück

void


setOptions()

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

Definiert in: async-batcher.ts:260

Aktualisiert die Optionen des asynchronen Batchers.

Parameter

newOptions

Partial<AsyncBatcherOptions<TValue>>

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.