ReadableStreamDefaultReader()

ReadableStreamDefaultReader() 构造函数创建并返回一个 ReadableStreamDefaultReader 实例对象。

备注: 你通常不需要手动创建,可以使用 ReadableStream.getReader() 方法代替。

语法

js
new ReadableStreamDefaultReader(stream)

参数

stream

将被读取的 ReadableStream

返回值

一个 ReadableStreamDefaultReader 实例对象。

异常

TypeError

如果提供的 stream 参数不是一个 ReadableStream,或者它已经被另一个 reader 锁定则抛出异常。

示例

在下面的简单示例中,使用 getReader() 创建的 ReadableStreamDefaultReader 读取先前自定义的 ReadableStream。(有关完整代码简单随机流演示)。直到流完成读取,每一个块都按顺序读取并输出到 UI,此时我们退出递归函数并且将整个流打印到 UI 的另一部分。

js
function fetchStream() {
  const reader = stream.getReader();
  let charsReceived = 0;
  // read() 返回一个 promise,其会在接收到数据时被兑现
  reader.read().then(function processText({ done, value }) {
    // 结果包含两个属性:
    // done  - 如果为 true,表示流已经返回所有的数据。
    // value - 一些数据,done 为 true 时,其值始终为 undefined。
    if (done) {
      console.log("Stream complete");
      para.textContent = result;
      return;
    }
    // 从流中获取的数据是一个 Uint8Array
    charsReceived += value.length;
    const chunk = value;
    let listItem = document.createElement("li");
    listItem.textContent =
      "Received " +
      charsReceived +
      " characters so far. Current chunk = " +
      chunk;
    list2.appendChild(listItem);
    result += chunk;
    // 再次调用该函数以读取更多数据
    return reader.read().then(processText);
  });
}

规范

Specification
Streams
# ref-for-default-reader-constructor①

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
ReadableStreamDefaultReader() constructor

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

参见