typescript / expert
Snippet
Asynchrone Generator-Stream-Pipeline mit AbortSignal-Abbruch
Dieses Snippet zeigt die native asynchrone Stream-Verarbeitung mittels TypeScripts `AsyncGenerator` und `AbortSignal`. Es garantiert ressourcensicheren kooperativen Abbruch und Backpressure-Unterstützung beim Pipelining asynchroner Daten-Sequenzen ohne externe Bibliotheken.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
async function* filterAsyncStream<T>(source: AsyncIterable<T>,predicate: (item: T) => boolean,signal?: AbortSignal): AsyncGenerator<T> {for await (const item of source) {if (signal?.aborted) {throw signal.reason ?? new Error("Operation aborted");}if (predicate(item)) {yield item;}}}
Erklärung
1
async function* filterAsyncStream<T>(
Deklariert einen asynchronen Generator, der Werte des Typs T erzeugt.
2
source: AsyncIterable<T>,
Akzeptiert jede Datenquelle, die das standardmäßige AsyncIterable-Interface erfüllt.
3
signal?: AbortSignal
Integriert Standard-AbortSignal für den Abbruch asynchroner Aufgaben.
4
if (signal?.aborted) {
Überprüft den Abbruchstatus vor der Verarbeitung jedes gesendeten Elements.
5
yield item;
Gibt valide Elemente, die die Prädikatsbedingung erfüllen, an den Konsumenten zurück.