ReadableByteStreamController: byobRequest 属性

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

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

byobRequestReadableByteStreamController 接口的只读属性,它返回当前的 BYOB 请求,如果没有待处理的请求,则返回 null

底层字节源应检查此属性,如果存在,则使用它将数据写入流(而不是使用 ReadableByteStreamController.enqueue())。这将实现数据到消费者的有效零字节传输。

一个 ReadableStreamBYOBRequest 对象实例,或者 null

示例

使用可读字节流 > 创建可读套接字推送字节流 中的示例演示了如何使用 byobRequest 来传输数据(如果存在),否则使用 ReadableByteStreamController.enqueue() 将数据复制到流的内部队列中。

相关代码转载如下。如果 byobRequest 存在,数据将读取到 controller.byobRequest.view 中,然后调用 ReadableStreamBYOBRequest.respond() 来指示要传输的数据量。

js
if (controller.byobRequest) {
  const v = controller.byobRequest.view;
  bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
  if (bytesRead === 0) {
    controller.close();
  }
  controller.byobRequest.respond(bytesRead);
} else {
  // Write to data using enqueue().
}

规范

规范
Streams
# ref-for-rbs-controller-byob-request②

浏览器兼容性

另见