ReadableStreamDefaultReader

翻译正在进行中。

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。


 Streams API 的 ReadableStreamDefaultReader 的接口 表示一个可被用于读取来自网络提供的流数据(例如 fetch 请求)的默认读取器

构造方法

ReadableStreamDefaultReader()
创建 和 返回 一个 ReadableStreamDefaultReader() 对象实例.

属性

ReadableStreamDefaultReader.closed
   
允许你编写 当stream结束时 执行的代码 . 如果这个stream变成关闭状态或者 reader 的锁(lock)被释放 则返回一个状态是 fulfills的 promise,如果这个stream 报错则返回rejects的promise.

方法

ReadableStreamDefaultReader.cancel()
取消这个 stream, 表示对这个stream失去了兴趣. 提供的参数将传递给源source, 可能会也可能不会用到这些参数.
ReadableStreamDefaultReader.read()
返回一个promise,提供对stream内部队列中下一个块(chunk)访问的promise.
ReadableStreamDefaultReader.releaseLock()
释放读取这个stream的锁.

例子

在下面的例子中, Response 被创建为流 HTML片段 fetched 来自其他源.

它展示了一个 ReadableStream 和一个 Uint8Array组合使用的例子.

fetch("https://www.example.org/").then((response) => {
  const reader = response.body.getReader();
  const stream = new ReadableStream({
    start(controller) {
      // The following function handles each data chunk
      function push() {
        // "done" is a Boolean and value a "Uint8Array"
        return reader.read().then(({ done, value }) => {
          // Is there no more data to read?
          if (done) {
            // Tell the browser that we have finished sending data
            controller.close();
            return;
          }

          // Get the data and send it to the browser via the controller
          controller.enqueue(value);
        }).then(push);
      };
      
      push();
    }
  });

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

产品规格

Specification Status Comment
Streams
ReadableStreamDefaultReader
Living Standard 初始定义

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support

52.0

57.0 (57.0) ?

39

?
Feature Android Webview Chrome for Android Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile
Basic support 52 52 ? ? ? 39 ?

文档标签和贡献者

 此页面的贡献者: zhiyuanzmj
 最后编辑者: zhiyuanzmj,