This page is not complete.
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.
- 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 custom
transformStream. It will take the form of an object with this structure —
- options Optional
- Not currently defined clearly in the spec.
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))
The definition of 'pipeThrough()' in that specification.
|Living Standard||Initial definition.|
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.