ReadableStream.pipeThrough()

これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

ReadableStream インターフェイスの pipeThrough() メソッドは、変換ストリームまたはその他の書き込み可能/読み取り可能なペアを介して現在のストリームをパイプするチェーン可能な方法を提供します。

ストリームをパイプすると、通常、パイプしている間はストリームがロックされ、他のリーダーがロックできなくなります。

構文

var transformedStream = readableStream.pipeThrough(transformStream[, options]);

パラメーター

transformStream
読み取り可能なストリームと書き込み可能なストリームで構成され、データをある形式から別の形式に変換する TransformStream(または構造 {writable, readable} のオブジェクト)。 書き込み可能なストリーム(writable stream)に書き込まれたデータは、読み取り可能なストリーム(readable stream)によって何らかの変換された状態で読み取ることができます。 例えば、TextDecoder ではバイトが書き込まれ、そこから文字列が読み取られ、動画デコーダーではエンコードされたバイトが書き込まれ、非圧縮動画フレームが読み取られます。
options Optional
書き込み可能なストリーム(writable stream)にパイプするときに使用するオプション。 pipeTo(writable, options) のような呼び出しで使用されます。

戻り値

transformStreamreadable 側。

例外

TypeError
transformStreamwritable および/または readable プロパティは未定義です。

次の例(ライブ実行中の完全なコードについては PNG のチャンクをアンパック、ソースコードについては png-transform-stream を参照)では、画像が取得され、そのボディが ReadableStream として取得されます。 次に、読み取り可能なストリームのコンテンツをログに記録し、pipeThrough() を使用して、グレースケールバージョンのストリームを作成する新しい関数に送信し、新しいストリームのコンテンツもログに記録します。

// 元の画像をフェッチ
fetch('png-logo.png')
// その body を ReadableStream として取得
.then(response => response.body)
.then(rs => logReadableStream('Fetch Response Stream', rs))
// 元の画像からグレースケール PNG ストリームを作成
.then(body => body.pipeThrough(new PNGTransformStream()))
.then(rs => logReadableStream('PNG Chunk Stream', rs))

仕様

仕様 状態 コメント
Streams
pipeThrough() の定義
現行の標準 初期定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
pipeThrough
実験的
Chrome 完全対応 59Edge 完全対応 79Firefox 未対応 なしIE 未対応 なしOpera 完全対応 46Safari 完全対応 10.1WebView Android 完全対応 59Chrome Android 完全対応 59Firefox Android 未対応 なしOpera Android 完全対応 43Safari iOS 完全対応 10.3Samsung Internet Android 完全対応 7.0

凡例

完全対応  
完全対応
未対応  
未対応
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。