ReadableStreamDefaultController - 表示一个允许控制 ReadableStream 状态和内部队列
ReadableStreamDefaultController 是 Streams 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 的定义 |
现行的标准 | 初始定义 |
桌面浏览器兼容性
| 特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| 基础支持 | 52 | 未知 | 65 57 | 未知 | 39 | 未知 |
ReadableStreamDefaultController() 构造函数 | 未知 | 未知 | 65 57 | 未知 | 未知 | 未知 |
close | 未知 | 未知 | 65 57 | 未知 | 未知 | 未知 |
desiredSize | 未知 | 未知 | 65 57 | 未知 | 未知 | 未知 |
enqueue | 未知 | 未知 | 65 57 | 未知 | 未知 | 未知 |
error | 未知 | 未知 | 65 57 | 未知 | 未知 | 未知 |
移动浏览器兼容性
| 特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
|---|---|---|---|---|---|---|---|
| 基础支持 | 52 | 52 | 未知 | 65 57 | 未知 | 41 | 未知 |
ReadableStreamDefaultController() 构造函数 | 未知 | 未知 | 未知 | 65 57 | 未知 | 未知 | 未知 |
close | 未知 | 未知 | 未知 | 65 57 | 未知 | 未知 | 未知 |
desiredSize | 未知 | 未知 | 未知 | 65 57 | 未知 | 未知 | 未知 |
enqueue | 未知 | 未知 | 未知 | 65 57 | 未知 | 未知 | 未知 |
error | 未知 | 未知 | 未知 | 65 57 | 未知 | 未知 | 未知 |