ReadableStream: pipeThrough() 方法
注意:此功能在 Web Workers 中可用。
ReadableStream 接口的 pipeThrough() 方法提供了一种链式方式,可以将当前流通过一个转换流或任何其他可写/可读对进行管道传输。
通常,管道传输流会将其锁定,直到管道传输完成,阻止其他读取器锁定它。
语法
pipeThrough(transformStream)
pipeThrough(transformStream, options)
参数
transformStream-
一个
TransformStream(或具有{writable, readable}结构的对象),它由一个可读流和一个可写流组成,协同工作将数据从一种形式转换为另一种形式。写入writable流的数据可以通过readable流以某种转换后的状态读取。例如,TextDecoder会接收字节并输出字符串,而视频解码器会接收编码后的字节并输出未压缩的视频帧。 options可选-
将流管道传输到
writable流时应使用的选项。可用选项包括:preventClose-
如果设置为
true,则关闭源ReadableStream不会再导致目标WritableStream被关闭。 preventAbort-
如果设置为
true,则源ReadableStream中的错误不会再中止目标WritableStream。 preventCancel-
如果设置为
true,则目标WritableStream中的错误不会再取消源ReadableStream。 signal-
如果设置为
AbortSignal对象,则可以通过相应的AbortController来中止正在进行的管道传输操作。
返回值
transformStream 的 readable 端。
异常
TypeError-
如果
transformStream的writable和/或readable属性未定义,则会抛出此错误。
示例
在下面的示例中(完整的实时代码请参见 Unpack chunks of a PNG,源代码请参见 png-transform-stream),会获取一个图像,并将其主体检索为 ReadableStream。
接下来,我们将记录可读流的内容,使用 pipeThrough() 将其发送到一个创建流的灰度版本的新函数,然后也记录新流的内容。
// 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));
规范
| 规范 |
|---|
| Streams # ref-for-rs-pipe-through② |
浏览器兼容性
加载中…
另见
ReadableStream()构造函数- 管道链