ReadableStream: pipeTo() 方法
注意:此功能在 Web Workers 中可用。
WritableStream 接口的 pipeTo() 方法将当前的 ReadableStream 管道传输到指定的 WritableStream,并返回一个 Promise。当管道传输成功完成时,该 Promise 将 fulfilled;如果在过程中遇到任何错误,则会 rejected。
管道传输流通常会 锁定 该流,直到管道传输结束,阻止其他读取器锁定它。
语法
pipeTo(destination)
pipeTo(destination, options)
参数
destination-
作为
ReadableStream最终目的地的WritableStream。 options可选-
管道传输到
writable流时应使用的选项。可用选项包括:preventClose-
如果设置为
true,源ReadableStream关闭将不再导致目标WritableStream关闭。一旦此过程完成,该方法将返回一个 fulfilled 的 promise,除非在关闭目标时遇到错误,在这种情况下,它将以该错误被 rejected。 preventAbort-
如果设置为
true,源ReadableStream中的错误将不再中止目标WritableStream。该方法将返回一个被 rejected 的 promise,其中包含源的错误,或在中止目标过程中发生的任何错误。 preventCancel-
如果设置为
true,目标WritableStream中的错误将不再取消源ReadableStream。在这种情况下,该方法将返回一个被 rejected 的 promise,其中包含源的错误,或在取消源过程中发生的任何错误。此外,如果目标可写流最初就是关闭或正在关闭的状态,则源可读流将不再被取消。在这种情况下,该方法将返回一个被 rejected 的 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());
})();
规范
| 规范 |
|---|
| Streams # ref-for-rs-pipe-to④ |
浏览器兼容性
加载中…
另见
ReadableStream()构造函数- 管道链