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① |
浏览器兼容性
加载中…