WritableStreamDefaultWriter: ready 属性

基线 2022

新可用

2022 年 6 月起,此功能可在最新的设备和浏览器版本中使用。此功能可能在较旧的设备或浏览器中无法使用。

注意:此功能在Web 工作线程中可用。

readyWritableStreamDefaultWriter 接口的只读属性,它返回一个 Promise,当流的内部队列的所需大小从非正数变为正数时,该 Promise 将被解析,表示它不再应用背压。

一个 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}`);
      });
  });
}

规范

规范
流标准
# ref-for-default-writer-ready⑨

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。