javascript / expert
Snippet
Bidirektionale Async-Generator-Pipelines
Async-Generatoren dienen nicht nur dem Streaming von Daten; sie können über den .next(value)-Aufruf Daten zurückerhalten. Dies ermöglicht komplexe Full-Duplex-Muster, bei denen der Generator pausiert und auf externen Input wartet.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
async function* duplexProcessor() {let request = yield 'INIT_OK';while (request !== 'TERMINATE') {const response = await fetch(`https://api.example.com/data/${request}`);request = yield await response.json();}}const engine = duplexProcessor();await engine.next(); // Start generatorconst result = await engine.next('id_101');console.log(result.value);
nodejs
Erklärung
1
request = yield await response.json();
Gibt die abgerufenen Daten aus und weist den nächsten Input von .next() der Variable 'request' zu.
2
await engine.next('id_101');
Setzt den Generator fort und injiziert den String als Ergebnis des vorherigen yield.