WritableStream

Baseline 廣泛可用 *

此功能已成熟,並可在許多裝置和瀏覽器版本上使用。自 2022 年 5 月以來,它已在各個瀏覽器中可用。

* 此特性的某些部分可能存在不同級別的支援。

注意:此功能在 Web Workers 中可用。

WritableStream 介面是 Streams API 的一部分,它提供了一個標準的抽象,用於將流式資料寫入一個稱為“接收器”(sink)的目標。該物件內建了反壓和佇列機制。

WritableStream 是一個 可轉移物件

建構函式

WritableStream()

建立一個新的 WritableStream 物件。

例項屬性

WritableStream.locked 只讀

一個布林值,指示 WritableStream 是否已鎖定到一個寫入器。

例項方法

WritableStream.abort()

中止流,通知生產者無法再成功寫入流,並且流將立即進入錯誤狀態,丟棄所有排隊的寫入操作。

WritableStream.close()

關閉流。

WritableStream.getWriter()

返回一個 WritableStreamDefaultWriter 的新例項,並將流鎖定到該例項。在流被鎖定的期間,在當前寫入器釋放之前,無法獲取其他寫入器。

示例

下面的示例演示了此介面的幾個功能。它使用自定義接收器建立 WritableStream。然後呼叫流的 getWriter() 方法,該方法返回一個 WritableStreamDefaultWriter 的例項。接下來,向流寫入幾個字串。最後,close() 返回一個 Promise,該 Promise 在所有寫入成功完成後解析。

js
const writableStream = new WritableStream(
  // Implement the sink
  {
    write(chunk) {
      const textElement = document.getElementById("text-output");
      textElement.textContent += chunk;
    },
  },
);

const writer = writableStream.getWriter();

try {
  writer.write("Hello, ");
  writer.write("world!\n");
  writer.write("This has been a demo!\n");

  await writer.close(); // wait for all chunks to be written
  console.log("All chunks written");
} catch (error) {
  console.error("Stream error: ", error);
}

此示例不支援 Streams 的 反壓 功能。

規範

規範
Streams
# ws-class

瀏覽器相容性

另見