Stream highWaterMark Missverständnis

Nach dem Lesen von Code auf Github, scheint es, als hätte ich falsch verstanden, wie diehighWaterMark Konzept funktioniert.

Bei einem beschreibbaren Stream, der so schnell wie möglich eine große Datenmenge schreibt, habe ich folgende Vorstellung vom Lebenszyklus:

1) Während dashighWaterMark limit wird nicht erreicht, der Stream kann Daten puffern und schreiben.

2) Wenn dashighWaterMark limit ist erreicht, der Stream kann nicht mehr puffern, daher gibt die #write-Methode false zurück, um Sie darauf hinzuweisen, dass das, was Sie zu schreiben versucht haben, kein Schreiben (nie) ist.

3) Sobald der Stream ein @ ausgidrain Event bedeutet, dass der Puffer aufgeräumt wurde und Sie erneut schreiben können, von wo aus Sie "abgelehnt" wurden.

Es war in meinen Augen klar und einfach, aber es sieht so aus, als ob dies nicht genau zutrifft (in Schritt 2). Werden die Daten, die Sie schreiben möchten, wirklich "zurückgewiesen", wenn die #write-Methode false zurückgibt? Oder ist es gepuffert (oder etwas anderes)?

Sorry für die grundlegende Frage, aber ich muss sicher sein!

Antworten auf die Frage(6)

Ihre Antwort auf die Frage