javascript / expert
Snippet
Feinabstimmung von Stream-Backpressure mit highWaterMark
Backpressure tritt auf, wenn Daten schneller gelesen als geschrieben werden. Die `highWaterMark` definiert die interne Puffergröße. Wenn `write()` den Wert `false` zurückgibt, ist der Puffer voll. Das Reagieren auf das 'drain'-Event ermöglicht eine speichereffiziente Datenverarbeitung, ohne den RAM des Systems zu überlasten.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
const { createReadStream, createWriteStream } = require('fs');const source = createReadStream('large.file', { highWaterMark: 64 * 1024 });const dest = createWriteStream('output.file', { highWaterMark: 16 * 1024 });source.on('data', (chunk) => {const canContinue = dest.write(chunk);if (!canContinue) {source.pause();dest.once('drain', () => source.resume());}});
nodejs
Erklärung
1
highWaterMark: 16 * 1024
Setzt das interne Pufferlimit für den Writable Stream auf 16KB.
2
dest.once('drain', ...)
Setzt die Quelle erst fort, nachdem der Zielpuffer geleert wurde.