WritableStreamDefaultWriter: ready 屬性

Baseline 已廣泛支援

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

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

readyWritableStreamDefaultWriter 介面的一個只讀屬性,它返回一個 Promise。當流內部佇列的期望大小從非正值變為正值時,此 Promise 會被 resolve,表示流不再施加背壓。

Promise

示例

以下示例展示了 ready 屬性的兩種用法。第一種用法是使用 ready 來確保 WritableStream 完成寫入並能夠接收資料,然後再發送一個二進位制塊。第二種用法也檢查 WritableStream 是否完成了寫入,但這次是因為在關閉寫入器之前必須完成寫入操作。

js
function sendMessage(message, writableStream) {
  // defaultWriter is of type WritableStreamDefaultWriter
  const defaultWriter = writableStream.getWriter();
  const encoder = new TextEncoder();
  const encoded = encoder.encode(message);
  encoded.forEach((chunk) => {
    // Make sure the stream and its writer are able to
    //   receive data.
    defaultWriter.ready
      .then(() => defaultWriter.write(chunk))
      .then(() => {
        console.log("Chunk written to sink.");
      })
      .catch((err) => {
        console.error(`Chunk error: ${err}`);
      });
    // Call ready again to ensure that all chunks are written
    //   before closing the writer.
    defaultWriter.ready
      .then(() => defaultWriter.close())
      .then(() => {
        console.log("All chunks written");
      })
      .catch((err) => {
        console.error(`Stream error: ${err}`);
      });
  });
}

規範

規範
Streams
# ref-for-default-writer-ready⑨

瀏覽器相容性