2017-07-28 3 views
1

Ich habe den Code:Hören Sie zu schreiben, wenn Rohrleitung lesen Stream zu schreiben Stream?

const readStream = fs.createReadStream(readFilename, { 
    highWaterMark: 10 * 1024 
}); 

const writeStream = fs.createWriteStream(writeFilename, { 
    highWaterMark: 1 * 1024 
}); 

readStream.pipe(writeStream); 

Wie Sie sehen können, der Puffer (high water) Größe unterscheidet sich für beide. Das Lesen hat einen höheren Puffer, wenn gelesene Pipes, um es zu schreiben, tatsächlich zu viel ist, um den Schreibpuffer zu handhaben. Es reserviert 9 * 1014 im Speicher und nachdem es die gesamte Last behandelt hat, die es ableitet. Das ist in Ordnung.

Jedoch. Wenn Sie manuell über writable.write schreiben, wird false zurückgegeben, so dass Sie den Lesestream ändern können, um einen niedrigeren Puffer zu haben (wenn Sie das wünschen).

Meine Frage ist, da ich direkt piping bin, gibt es eh das write Event auf dem schreibbaren zu hören? Das einzige, was ich zu hören scheinen, ist das Drain-Ereignis nach hat es schon zu viel aufgenommen.

Antwort

0

Ja, es gibt. Sie können die data Veranstaltung hören:

writeStream.on('data', data => console.log(data))