ReadableStreamBYOBRequest: respond() 方法

可用性有限

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

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

ReadableStreamBYOBRequest 接口的 respond() 方法用于向关联的 可读字节流 发出信号,表明指定数量的字节已写入 ReadableStreamBYOBRequest.view

调用此方法后,view 将被转移且不再可修改。

语法

js
respond(bytesWritten)

参数

bytesWritten

写入 ReadableStreamBYOBRequest.view 的字节数。

返回值

无(undefined)。

异常

TypeError

请求没有关联的 ReadableByteStreamController,或者 view 缓冲区未分离/无法传入。

示例

下面的代码摘自 使用可读字节流 中的实时示例。

底层字节源调用此方法,作为执行零拷贝数据传输的一部分,以满足消费者挂起的读取请求。底层源首先将数据写入 ReadableStreamBYOBRequest.view,然后调用此 respond() 方法来指示已将多少数据复制到缓冲区中,并促使数据传输给读取器。

下面的代码使用一个假设的 readInto() 方法将数据复制到 view 中,展示了这种情况。

js
const v = controller.byobRequest.view;
bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
controller.byobRequest.respond(bytesRead);

操作完成后,byobRequest.view 将被分离,并且请求应该被丢弃。

规范

规范
Streams
# ref-for-rs-byob-request-respond①

浏览器兼容性

另见