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① |
瀏覽器相容性
載入中…