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 的浏览器中加载。