ReadableStreamDefaultReader - 表示一个默认的流读取器

ReadableStreamDefaultReaderStreams API 的接口,表示一个默认的流读取器,可用于读取从网络提供的流数据(例如,获取请求)。

构造函数

ReadableStreamDefaultReader()

创建并返回一个 ReadableStreamDefaultReader 对象实例。

属性

ReadableStreamDefaultReader.closed 只读

允许您编写响应流式传输过程结束的代码。返回一个 Promise,该 Promise 将在流关闭或释放阅读器的锁时实现,或者在流错误时拒绝。

方法

ReadableStreamDefaultReader.cancel()

取消流,表示消费者对流失去兴趣。reason 参数将被提供给基础数据源,该数据源可以使用它,也可以不使用它。

ReadableStreamDefaultReader.read()

返回一个 Promise,提供对流内部队列中下一个块的访问。

ReadableStreamDefaultReader.releaseLock()

释放阅读器对流的锁定。

实例

在下面的实例中,将创建一个人工的 Response,以将从其他资源获取的 HTML 片段流式传输到浏览器。

它演示了 ReadableStreamUint8Array 结合的用法。

fetch("https://www.example.org/").then((response) => {
  const reader = response.body.getReader();
  const stream = new ReadableStream({
    start(controller) {
      // 以下函数处理每个数据块
      function push() {
        // “done” 是布尔值,value 是 “Uint8Array”
        return reader.read().then(({ done, value }) => {
          // 没有更多数据可读取了吗?
          if (done) {
            // 告诉浏览器我们已经完成发送数据
            controller.close();
            return;
          }

          // 获取数据并通过控制器将其发送到浏览器
          controller.enqueue(value);
          push();
        });
      };

      push();
    }
  });

  return new Response(stream, { headers: { "Content-Type": "text/html" } });
});

规范

规范 状态 备注
Streams
ReadableStreamDefaultReader 的定义
现行的标准 初始定义

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持52 未知

65

57

未知39 未知
ReadableStreamDefaultReader() 构造函数 未知 未知

65

57

未知 未知 未知
cancel 未知 未知

65

57

未知 未知 未知
closed 未知 未知

65

57

未知 未知 未知
read 未知 未知

65

57

未知 未知 未知
releaseLock 未知 未知

65

57

未知 未知 未知

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持5252 未知

65

57

未知41 未知
ReadableStreamDefaultReader() 构造函数 未知 未知 未知

65

57

未知 未知 未知
cancel 未知 未知 未知

65

57

未知 未知 未知
closed 未知 未知 未知

65

57

未知 未知 未知
read 未知 未知 未知

65

57

未知 未知 未知
releaseLock 未知 未知 未知

65

57

未知 未知 未知