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 也将解析。

规范

规范
Streams
# ref-for-rbs-controller-close①

浏览器兼容性

另见