ReadableStreamDefaultController - 表示一个允许控制 ReadableStream 状态和内部队列

ReadableStreamDefaultControllerStreams API 的接口,表示一个允许控制 ReadableStream 状态和内部队列。默认控制器用于不是字节流的流。

构造函数

ReadableStreamDefaultController()

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

属性

ReadableStreamDefaultController.desiredSize 只读

返回填充流的内部队列所需的所需大小。

方法

ReadableStreamDefaultController.close()

关闭关联的流。

ReadableStreamDefaultController.enqueue()

将给定的块放入关联的流中。

ReadableStreamDefaultController.error()

使将来与关联流的任何交互均出错。

实例

在下面的简单实例中,使用构造函数创建了自定义的 ReadableStream(有关完整代码,请参见我们的简单随机流示例)。start() 函数每秒生成一个随机的文本字符串,并将其放入流中。如果出于任何原因调用了 ReadableStream.cancel(),还会提供了 ReadableStream 函数来停止生成。

注意,start()pull() 函数的参数是 ReadableStreamDefaultController 对象。

按下按钮后,将停止生成,使用 ReadableStreamDefaultController.close() 关闭流,然后运行另一个函数,该函数将从流中读取数据。

const stream = new ReadableStream({
  start(controller) {
    interval = setInterval(() => {
      let string = randomChars();

      // 将字符串添加到流中
      controller.enqueue(string);

      // 在屏幕上显示
      let listItem = document.createElement('li');
      listItem.textContent = string;
      list1.appendChild(listItem);
    }, 1000);

    button.addEventListener('click', function() {
      clearInterval(interval);
      fetchStream();
      controller.close();
    })
  },
  pull(controller) {
    // 在这个例子中我们不需要拉取操作
  },
  cancel() {
    // 如果读取器取消,则我们应停止生成字符串
    clearInterval(interval);
  }
});

规范

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

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持52 未知

65

57

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

65

57

未知 未知 未知
close 未知 未知

65

57

未知 未知 未知
desiredSize 未知 未知

65

57

未知 未知 未知
enqueue 未知 未知

65

57

未知 未知 未知
error 未知 未知

65

57

未知 未知 未知

移动浏览器兼容性

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

65

57

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

65

57

未知 未知 未知
close 未知 未知 未知

65

57

未知 未知 未知
desiredSize 未知 未知 未知

65

57

未知 未知 未知
enqueue 未知 未知 未知

65

57

未知 未知 未知
error 未知 未知 未知

65

57

未知 未知 未知