ReadableStream: pipeThrough()-Methode
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 Transformationsstream oder ein beliebiges anderes schreib-/lesepaar zu leiten.
Ein Stream wird beim Piping in der Regel für die Dauer des Pipes gesperrt, wodurch andere Leser daran gehindert werden, ihn zu sperren.
Syntax
pipeThrough(transformStream)
pipeThrough(transformStream, options)
Parameter
transformStream
-
Ein
TransformStream
(oder ein Objekt mit der Struktur{writable, readable}
), das aus einem lesbaren und einem beschreibbaren Stream besteht, die zusammenarbeiten, um einige Daten von einer Form in eine andere zu transformieren. Daten, die in denwritable
-Stream geschrieben werden, können in einem transformierten Zustand vomreadable
-Stream gelesen werden. Beispielsweise hat einTextDecoder
Bytes, die in ihn geschrieben werden, und Zeichenketten, die aus ihm gelesen werden, während ein Videodecoder kodierte Bytes in ihn geschrieben und unkomprimierte Videoframes aus ihm gelesen werden. options
Optional-
Die Optionen, die beim Piping zum
writable
-Stream verwendet werden sollen. Verfügbare Optionen sind:preventClose
-
Wenn diese Option auf
true
gesetzt ist, führt das Schließen des Quell-ReadableStream
nicht mehr dazu, dass der Ziel-WritableStream
geschlossen wird. preventAbort
-
Wenn diese Option auf
true
gesetzt ist, führen Fehler im Quell-ReadableStream
nicht mehr dazu, dass der Ziel-WritableStream
abgebrochen wird. preventCancel
-
Wenn diese Option auf
true
gesetzt ist, führen Fehler im Ziel-WritableStream
nicht mehr dazu, dass der Quell-ReadableStream
abgebrochen wird. signal
-
Wenn ein
AbortSignal
-Objekt gesetzt ist, können laufende Pipe-Operationen über den entsprechendenAbortController
abgebrochen werden.
Rückgabewert
Die readable
-Seite des transformStream
.
Ausnahmen
TypeError
-
Ausgelöst, wenn die
writable
- und/oderreadable
-Eigenschaft vontransformStream
nicht definiert ist.
Beispiele
Im folgenden Beispiel (siehe Unpack chunks of a PNG für den vollständigen Code, der live ausgeführt wird, und png-transform-stream für den Quellcode) wird ein Bild abgerufen und dessen Body als ReadableStream
abgerufen.
Anschließend protokollieren wir den Inhalt des lesbaren Streams, verwenden pipeThrough()
, um ihn an eine neue Funktion zu senden, die eine grau gefärbte Version des Streams erstellt, und protokollieren dann auch den neuen Streaminhalt.
// 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 Standard # ref-for-rs-pipe-through② |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
ReadableStream()
-Konstruktor- Pipe-Ketten