ReadableStream: pipeThrough() Methode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juni 2022.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die pipeThrough() Methode der ReadableStream-Schnittstelle bietet eine kaskadierbare Möglichkeit, den aktuellen Stream durch einen Transform-Stream oder ein anderes schreibbares/lesbares Paar zu leiten.
Das Leiten eines Streams sperrt diesen in der Regel für die Dauer der Pipe, was verhindert, dass andere Leser ihn sperren können.
Syntax
pipeThrough(transformStream)
pipeThrough(transformStream, options)
Parameter
transformStream-
Ein
TransformStream(oder ein Objekt mit der Struktur{writable, readable}), bestehend aus einem lesbaren und einem schreibbaren Stream, die zusammenarbeiten, um Daten von einer Form in eine andere zu transformieren. Daten, die in denwritableStream geschrieben werden, können in einem transformierten Zustand vomreadableStream gelesen werden. Beispielsweise werden in einenTextDecoderBytes geschrieben und Zeichenketten ausgelesen, während ein Videodecoder codierte Bytes geschrieben und unkomprimierte Videoframes ausgelesen werden. optionsOptional-
Die Optionen, die beim Leiten zum
writableStream verwendet werden sollen. Verfügbare Optionen sind:preventClose-
Wenn dies auf
truegesetzt ist, führt das Schließen des Quellen-ReadableStreamnicht mehr dazu, dass der Ziel-WritableStreamgeschlossen wird. preventAbort-
Wenn dies auf
truegesetzt ist, führen Fehler im Quellen-ReadableStreamnicht mehr dazu, dass der Ziel-WritableStreamabgebrochen wird. preventCancel-
Wenn dies auf
truegesetzt ist, führen Fehler im Ziel-WritableStreamnicht mehr dazu, dass der Quellen-ReadableStreamabgebrochen wird. signal-
Wenn auf ein
AbortSignal-Objekt gesetzt, können laufende Pipe-Operationen dann über den entsprechendenAbortControllerabgebrochen werden.
Rückgabewert
Die readable Seite des transformStream.
Ausnahmen
TypeError-
Wird ausgelöst, wenn die
writableund/oderreadableEigenschaft vontransformStreamundefiniert sind.
Beispiele
Im folgenden Beispiel (siehe Unpack chunks of a PNG für den vollständigen, live ausgeführten Code und png-transform-stream für den Quellcode) wird ein Bild abgerufen und sein Körper als ReadableStream erfasst.
Als Nächstes protokollieren wir den Inhalt des lesbaren Streams, verwenden pipeThrough(), um ihn an eine neue Funktion zu senden, die eine grau skalierte Version des Streams erstellt, und protokollieren dann auch den neuen Stream-Inhalt.
// Fetch the original image
fetch("png-logo.png")
// Retrieve its body as ReadableStream
.then((response) => response.body)
.then((rs) => logReadableStream("Fetch Response Stream", rs))
// Create a gray-scaled PNG stream out of the original
.then((body) => body.pipeThrough(new PNGTransformStream()))
.then((rs) => logReadableStream("PNG Chunk Stream", rs));
Spezifikationen
| Specification |
|---|
| Streams> # ref-for-rs-pipe-through②> |
Browser-Kompatibilität
Loading…
Siehe auch
ReadableStream()Konstruktor- Pipe chains