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.
Syntax
readableStreamInstance.pipeThrough(transformStream, options);
Parameters
- transformStream
- An object consisting of a readable stream and a writable stream working together to transform some data from one form to another. The writable stream writes new data to be read by the readable stream. For example, a
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 customtransformStream
. It will take the form of an object with this structure —{writableStream, readableStream}
. - options Optional
- Not currently defined clearly in the spec.
Return value
Void.
Exceptions
- TypeError
- The
writableStream
and/orreadableStream
in thetransformStream
are undefined.
Examples
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))
Specifications
Specification | Status | Comment |
---|---|---|
Streams The definition of 'pipeThrough()' in that specification. |
Living Standard | Initial definition. |
Browser compatibility
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
No compatibility data found. Please contribute data for "path.to.feature.NameOfTheProperty" (depth: 1) to the MDN compatibility data repository.