ReadableByteStreamController: enqueue() メソッド

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

enqueue()ReadableByteStreamController で、指定されたチャンクを、関連する読み取り可能なバイトストリームのキューに入れます(チャンクはストリーム内部のキューにコピーされます)。

これは、 byobRequestnull である場合にのみ、キューへのデータ移譲に使用しましょう。

構文

js
enqueue(chunk)

引数

chunk

キューに入れるチャンク。

返値

なし (undefined)。

例外

TypeError

ソースオブジェクトが ReadableByteStreamController ではないか、何らかの理由でストリームを読み取れないか、チャンクがオブジェクトではないか、チャンクの内部配列バッファーが存在しないか、切り離されています。 ストリームが既に閉じられていたときにも発生します。

読み取り可能なバイトストリームの使用 > 読み取り可能なソケットプッシュバイトストリームの作成 の例では、未処理の byobRequest がない場合に enqueue() を使用してデータをストリームにコピーする方法を示します。 もし byobRequest があれば、それを使用しましょう。

下記のコードでは、「仮定の」 socket.readInto() メソッドを使用してデータを ArrayBuffer に読み込ませ、その後キューに入れています(ただし、実際にデータがコピーされた場合のみ)。

js
const buffer = new ArrayBuffer(DEFAULT_CHUNK_SIZE);
bytesRead = socket.readInto(buffer, 0, DEFAULT_CHUNK_SIZE);
if (bytesRead === 0) {
  controller.close();
} else {
  controller.enqueue(new Uint8Array(buffer, 0, bytesRead));
}

仕様書

Specification
Streams Standard
# ref-for-rbs-controller-enqueue①

ブラウザーの互換性

BCD tables only load in the browser

関連情報