tencent cloud

Tencent Cloud EdgeOne

TransformStream

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-11-04 10:29:57
AI翻訳・品質チェック済み
TransformStreamは一対のストリームで構成されています。一つは読み取り可能なストリームで、読み取り可能端と呼ばれ、もう一つは書き込み可能なストリームで、書き込み可能端と呼ばれます。Web APIs標準TransformStreamに基づいて設計されています。

コンストラクタ

const { readable, writable } = new TransformStream(transformer?: any, writableStrategy?: WritableStrategy);

パラメータ

パラメータ名
タイプ
必須
説明
transformer
any
いいえ
現時点ではサポートされていません。値を渡しても有効にならず、このパラメータは自動的に無視されます。
writableStrategy
いいえ
書き込み可能端末のポリシー設定。

WritableStrategy

属性名
タイプ
必須
説明
highWaterMark
number
はい
書き込み側バッファサイズはバイト単位で、デフォルト値は32K、最大値は256Kです。最大値を超えると自動的に256Kに調整されます。

属性

readable

readonly readable: ReadableStream;
可読端です。詳細はReadableStreamを参照してください。

writable

readonly writable: WritableStream;
可書端です。詳細はWritableStreamを参照してください。

サンプルコード

async function handleEvent(event) {
// 読み取り可能な端と書き込み可能な端を生成します。
const { readable, writable } = new TransformStream();
// リモートリソースを取得します。
const response = await fetch('https://www.tencentcloud.com/');
// クライアントへのストリーミングレスポンスです。
response.body.pipeTo(writable);

return new Response(readable, response);
}

addEventListener('fetch', (event) => {
event.respondWith(handleEvent(event));
});

FixedLengthStream

FixedLengthStreamはTransformStreamの特殊な実装であり、固定コンテンツ長のストリーミングレスポンスを作成するために使用されます。FixedLengthStreamを使用して構築されたResponseまたはRequestオブジェクトには、Content-Lengthヘッダーが自動的に付与され、その値は事前設定された総バイト数です。
このAPIは、レスポンスボディのサイズを事前に計算でき、Content-Lengthヘッダーを付与することでクライアントエクスペリエンスを向上させたいシーンに適しています。例えばファイルダウンロード時、ブラウザやダウンローダーは通常、Content-Lengthヘッダーを通じてファイルの合計サイズを取得し、ダウンロードの進捗を計算して進捗バーを表示します。

コンストラクタ

const { readable, writable } = new FixedLengthStream(length: number | bigint);

パラメータ

属性名
タイプ
必須
説明
length
number | bigint
はい
ストリームの合計バイト数を指定します。最大値は2^53 - 1です。

サンプルコード


async function handleEvent(event) {
// 読み取り可能な端と書き込み可能な端を生成します。
const { readable, writable } = new FixedLengthStream(12);
const writer = writable.getWriter();
// データを複数回書き込みます。
writer.write("Hello");
writer.write(" ");
writer.write("World");
writer.write("!");
writer.close();
writer.releaseLock();
return event.respondWith(new Response(readable));
}

addEventListener('fetch', event => {
handleEvent(event);
});

関連参考





ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック