javascript / expert
Snippet
Komplexe Event-Stream-Filterung mittels Async-Generator-Kontrollfluss
Asynchrone Generatoren bieten deklarative Kontrollfluss-Primitiven zur Verarbeitung asynchroner Datenströme. Durch die Kombination von for await...of mit bedingtem yield lassen sich saubere Transformationspipes erstellen.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
async function* filterStream(source, predicate) {for await (const item of source) {if (await predicate(item)) {yield item;}}}const numbers = async function* () { yield 5; yield 12; yield 8; }();const evenStream = filterStream(numbers, async (x) => x % 2 === 0);for await (const val of evenStream) {console.log(val);}
nodejs
Erklärung
1
async function* filterStream(source, predicate)
Definiert eine asynchrone Generatorfunktion, die einen iterierbaren Stream-Transformator erstellt.
2
for await (const item of source)
Konsumiert asynchrone iterierbare Elemente sequentiell, sobald sie vom Quellstream verfügbar sind.
3
yield item;
Gibt gefilterte Elemente nachgelagert frei und behält dabei die Kontrolle über den Gegendruck (Backpressure).