ReadableByteStreamController:enqueue() 方法
注意:此功能在Web Workers中可用。
enqueue()
是ReadableByteStreamController
接口的方法,用于将给定的块入队到关联的可读字节流中(该块会被复制到流的内部队列中)。
只有当byobRequest
为null
时,才应使用此方法将数据传输到队列。
语法
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 的浏览器中加载。