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()建構函式- 管道鏈