ReadableStream.pipeTo()
Baseline 2022
Newly available
Since June 2022, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
ReadableStream
接口的 pipeTo()
方法通过管道将当前的 ReadableStream
中的数据传递给给定的 WritableStream
并且返回一个 Promise
,promise 在传输成功完成时兑现,在遇到任何错误时则会被拒绝。
传输一个流时通常会在传输的持续时间内锁定这个流,以阻止其他 reader 锁定它。
语法
pipeTo(destination)
pipeTo(destination, options)
参数
destination
-
充当
ReadableStream
最终目标的WritableStream
。 options
可选-
传输至
writable
流应该被使用的选项。可用选项是:preventClose
-
如果设置为
true
,源ReadableStream
的关闭将不再导致目标WritableStream
关闭。一旦此过程完成,该方法将返回的 promise 将被兑现;除非在关闭目标时遇到错误,在这种情况下,它将因为该错误被拒绝。 preventAbort
-
如果设置为
true
,源ReadableStream
中的错误将不再中止目标WritableStream
。该方法返回的 promise 将因源流的错误或者任何在中止目地流期间的错误而被拒绝。 preventCancel
-
如果设置为
true
,目标WritableStream
的错误将不再取消源ReadableStream
。在这种情况下,该方法返回的 promise 将因源流的错误或者在取消源流期间发生的任何错误而被拒绝。此外,如果目标可写流开始关闭或者正在关闭,则源可读流将不再被取消。在这种情况下,方法返回的 promise 也将被拒绝,其错误为连接到一个已关闭的流或者在取消源流期间发生的任何错误。 signal
-
如果设置一个
AbortSignal
对象,然后可以通过相应的AbortController
中止正在进行的传输操作。
返回值
返回一个 Promise
,其在传输完成时兑现。
异常
TypeError
-
writableStream
且/或readableStream
对象不是一个可写/可读流,或者其中一个或者两个流被锁定。
示例
// 获取原始图像
fetch("png-logo.png")
// 取回响应的 body 属性,该属性继承 ReadableStream
.then((response) => response.body)
.then((body) => body.pipeThrough(new PNGTransformStream()))
.then((rs) => rs.pipeTo(new FinalDestinationStream()));
规范
Specification |
---|
Streams Standard # ref-for-rs-pipe-to④ |
浏览器兼容性
BCD tables only load in the browser
参见
ReadableStream()
构造函数- 链式管道传输