ReadableByteStreamController:enqueue() 方法

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

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));
}

规范

规范
Streams 标准
# ref-for-rbs-controller-enqueue①

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅