ReadableByteStreamController: close() 方法

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

close() 方法是 ReadableByteStreamController 接口的一个方法,用于关闭关联的流。

当底层源的数据源耗尽/完成时,可能会调用此方法。

注意:读取器仍然可以读取流中之前已入队的任何块,但是一旦这些块读取完毕,流将变为关闭状态。但是,如果在调用 close() 时存在一个未完成且部分写入的 byobRequest,则流将出错。

语法

js
close()

参数

无。

返回值

无 (undefined).

异常

TypeError

如果源对象不是 ReadableByteStreamController,或者它已关闭,或者流由于其他原因不可读,则会抛出此异常。

示例

使用可读字节流 > 创建可读套接字推送字节流 中的示例展示了如何在没有更多数据时关闭流。

下面复制了相关的代码。这依赖于假设的 readInto() 方法仅在没有更多数据时返回 0 个字节。

js
bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
if (bytesRead === 0) {
  controller.close();
}

调用 close 后,流将关闭,并向任何使用者发出信号。例如,如果使用 ReadableStreamBYOBReader,则任何 read() 请求都将以 done: true 解析,并且来自 ReadableStreamBYOBReader.closed 的 promise 也将解析。

规范

规范
流标准
# ref-for-rbs-controller-close①

浏览器兼容性

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

另请参阅