javascript / expert
Snippet
Backpressure-Behandlung in asynchronen Generatoren
Asynchrone Generatoren bieten eine natürliche Möglichkeit, Backpressure zu implementieren. Indem man innerhalb des Generators vor dem 'yield' auf ein Promise wartet, signalisiert man dem Produzenten, dass der Konsument noch nicht bereit für weitere Daten ist, was die Flusssteuerung in asynchronen Strömen effizient verwaltet.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
async function* streamProcessor(source) {for await (const chunk of source) {if (needsThrottling()) {await new Promise(r => setTimeout(r, 100)); // Simulate backpressure}yield transform(chunk);}}const consumer = async () => {for await (const data of streamProcessor(dataSource)) {console.log(data);}};
Erklärung
1
async function* streamProcessor
Definiert einen Generator, der asynchrone Operationen zwischen den Yields abwarten kann.
2
for await (const chunk of source)
Konsumiert einen asynchronen Iterator unter Berücksichtigung seines Timings.