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①

浏览器兼容性

另见