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①

瀏覽器相容性

另見