ReadableByteStreamController: enqueue() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

注意:此功能在 Web Workers 中可用。

ReadableByteStreamController 介面的 enqueue() 方法會將指定的塊入隊到關聯的可讀位元組流中(該塊會被轉移到流的內部佇列中)。

byobRequestnull 時,才應該使用此方法將資料傳輸到佇列。

語法

js
enqueue(chunk)

引數

chunk

要入隊的塊。

返回值

無(undefined)。

異常

TypeError

如果源物件不是 ReadableByteStreamController,或者流因其他原因無法讀取,或者塊不是物件,或者塊的內部 ArrayBuffer 不存在、零長度或已分離,則會丟擲此錯誤。如果流已關閉,也會丟擲此錯誤。

示例

使用可讀位元組流 > 建立可讀套接字推送位元組流 中的示例展示瞭如何在沒有待處理的 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));
}

規範

規範
Streams
# ref-for-rbs-controller-enqueue①

瀏覽器相容性

另見