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 | 未知 | 未知 | 未知 |