Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

ReadableStream BYOBReader

最終更新 Markdown で表示Agent セットアップ

背景

BYOB は bring your own buffer(自分のバッファーを持参する)の略です。ReadableStreamBYOBReader を使うと、開発者が用意したバッファーへ読み込めるため、コピーを減らせます。

ReadableStreamBYOBReader のインスタンスは、read メソッドを除き ReadableStreamDefaultReader と同じように動作します。

ReadableStreamBYOBReader はコンストラクターでは生成しません。ReadableStream から取得します。

const { readable, writable } = new TransformStream();
const reader = readable.getReader({ mode: 'byob' });

メソッド

  • read(bufferArrayBufferView) : Promise<ReadableStreamBYOBReadResult>

    • 渡したバッファーへ次のチャンクを読み込み、その Promise を返します。
  • readAtLeast(minElements, bufferArrayBufferView) : Promise<ReadableStreamBYOBReadResult>

    • 渡したバッファーへ次のチャンクを読み込み、その Promise を返します。少なくとも minElements 個の要素が読み込まれるまで、Promise は解決しません。要素サイズは bufferArrayBufferView で決まります。たとえば Uint32Array なら要素あたり 4 バイトです。ただし、ストリームの終端に達した場合や、基盤ストリームが閉じられた場合は、minElements 未満でも返ることがあります。具体的には次のとおりです。

      • minElements 個以上の要素が利用できる場合、Promise は { value: <読み込んだバイト数に合わせたバッファービュー>, done: false } で解決します。
      • データが一部読み込まれたあとにストリームが終了し、要素数が minElements 未満の場合、Promise は部分データ { value: <実際に読み込んだバイト数に合わせたバッファービュー>, done: false } で解決します。次の read または readAtLeast の呼び出しは { value: undefined, done: true } を返します。
      • 利用可能なバイトが 0 の状態でストリームが終了した場合(すでに EOF)、Promise は { value: <長さ 0 のビュー>, done: true } で解決します。
      • ストリームがエラーになった場合、Promise は拒否されます。
      • minElements は 1 以上である必要があり、minElements * elementSizebufferArrayBufferView のバイト長を超えてはいけません。超えると Promise は TypeError で拒否されます。Uint8Array の要素サイズは 1 なので、minElements は実質的にバイト数です。

よくある問題


関連リソース

役に立ちましたか?