Ich verwendete einen ähnlichen Code, bis ich die Methode 'setEncoding' entdeckte. Beim Refactoring des Codes kam diese Frage zu mir.Warum kann ich in einen lesbaren Stream pushen?
readable.push(chunk, 'base64')
readable.push(null)
readable.pipe(res)
Schieben Sie nicht eine Form des Schreibens von Daten? Kann ich keine Daten in einen lesbaren Stream schreiben? Ich weiß, dass alle Daten geschrieben werden müssen (sonst wäre es null) und irgendwann gelesen (oder es wird nutzlos), aber ich dachte, Node würde das von uns abstrahieren.
Könnte jemand dies für mich klären? Danke
Nur noch eine Sache: Ist diese Art der Erstellung von Readables async? – eduardogbg
Der Async-Aspekt von Node kommt nur dann zum Tragen, wenn Sie eine Operation ausführen, die I/O-gebunden ist. Knoten sind single-threaded und können nur einzelne Dinge tun, async-Operationen werden von libuv behandelt, was das Multithreading-Gefühl von node erzeugt. Dies ist jedoch keine blockierende Operation, was bedeutet, dass asynchrone Operationen während der Ausführung dieses Codes noch bearbeitet werden können. – peteb
Nach dem Lesen der Dokumente, macht alles mehr Sinn: "Ende Beende den Schreiber, wenn der Leser endet. Standardmäßig auf wahr." Es gibt den Schreiber und den Leser eines Streams, und wenn der Schreiber beendet ist, können keine Daten mehr in ein Readable geschrieben werden. Das ist das Drücken von Null. –
eduardogbg