ReadableStream: pipeTo() 方法
注意:此功能在 Web Workers 中可用。
ReadableStream
接口的 pipeTo()
方法将当前 ReadableStream
管道到给定的 WritableStream
,并返回一个 Promise
,该 Promise 在管道过程成功完成时完成,如果遇到任何错误,则会拒绝。
管道流通常会 锁定 它在管道持续时间内,阻止其他读取器锁定它。
语法
pipeTo(destination)
pipeTo(destination, options)
参数
destination
-
一个
WritableStream
,作为ReadableStream
的最终目的地。 options
可选-
管道到
writable
流时应使用的选项。可用的选项是preventClose
-
如果将其设置为
true
,源ReadableStream
关闭将不再导致目标WritableStream
关闭。此方法将在此过程完成后返回已完成的 Promise,除非在关闭目标时遇到错误,在这种情况下,它将使用该错误被拒绝。 preventAbort
-
如果将其设置为
true
,源ReadableStream
中的错误将不再中止目标WritableStream
。此方法将返回一个 Promise,该 Promise 被源错误或中止目标期间发生的任何错误拒绝。 preventCancel
-
如果将其设置为
true
,目标WritableStream
中的错误将不再取消源ReadableStream
。在这种情况下,此方法将返回一个 Promise,该 Promise 被源错误或取消源期间发生的任何错误拒绝。此外,如果目标可写流从关闭或关闭开始,源可读流将不再被取消。在这种情况下,该方法将返回一个 Promise,该 Promise 被一个错误拒绝,该错误指示管道到关闭流失败,或者被取消源期间发生的任何错误拒绝。 signal
-
如果设置为
AbortSignal
对象,则可以通过相应的AbortController
中止正在进行的管道操作。
返回值
一个 Promise
,在管道过程完成后解析。
异常
TypeError
-
writableStream
和/或readableStream
对象不是可写流/可读流,或者其中一个流或两个流都已锁定。
示例
// Fetch the original image
fetch("png-logo.png")
// Retrieve its body as ReadableStream
.then((response) => response.body)
.then((body) => body.pipeThrough(new PNGTransformStream()))
.then((rs) => rs.pipeTo(new FinalDestinationStream()));
相同的示例,但使用 await
(async () => {
// Fetch the original image
const response = await fetch("png-logo.png");
// Retrieve its body as ReadableStream
await response.body
.pipeThrough(new PNGTransformStream())
.pipeTo(new FinalDestinationStream());
})();
规范
规范 |
---|
流标准 # ref-for-rs-pipe-to④ |
浏览器兼容性
BCD 表格仅在浏览器中加载
另请参阅
ReadableStream()
构造函数- 管道链