Draft
This page is not complete.
This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The pipeThrough()
method of the ReadableStream
interface provides a chainable way of piping the current stream through a transform stream or any other writable/readable pair.
Piping a stream will generally lock it for the duration of the pipe, preventing other readers from locking it.
readableStreamInstance.pipeThrough(transformStream, options);
TextDecoder
, has bytes written to it and strings read from it, while a video decoder has encoded bytes written to it and uncompressed video frames read from it. You can create your own custom transformStream
. It will take the form of an object with this structure — {writableStream, readableStream}
.Void.
writableStream
and/or readableStream
in the transformStream
are undefined.In the following example (see Unpack chunks of a PNG for the full code running live, and png-transform-stream for the source code), an image is fetched and its body retrieved as a ReadableStream
. Next, we log the contents of the readable stream, use pipeThrough()
to send it to a new function that creates a gray-scaled version of the stream, then log the new stream's contents too.
// 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))
Specification | Status | Comment |
---|---|---|
Streams The definition of 'pipeThrough()' in that specification. | Living Standard | Initial definition. |
No compatibility data found. Please contribute data for "path.to.feature.NameOfTheProperty" (depth: 1) to the MDN compatibility data repository.
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/pipeThrough