ReadableStreamDefaultController
注意:此功能在Web Workers中可用。
ReadableStreamDefaultController
是 Streams API 的一个接口,它表示一个控制器,允许控制 ReadableStream
的状态和内部队列。默认控制器用于非字节流。
构造函数
无。ReadableStreamDefaultController
实例在 ReadableStream
构造期间自动创建。
实例属性
ReadableStreamDefaultController.desiredSize
只读-
返回填充流内部队列所需的所需大小。
实例方法
ReadableStreamDefaultController.close()
-
关闭关联的流。
ReadableStreamDefaultController.enqueue()
-
将给定块入队到关联的流中。
ReadableStreamDefaultController.error()
-
导致与关联流的任何未来交互都发生错误。
示例
在以下简单示例中,使用构造函数创建了一个自定义 ReadableStream
(有关完整代码,请参阅我们的简单随机流示例)。start()
函数每秒生成一个随机文本字符串并将其入队到流中。如果出于任何原因调用了 ReadableStream.cancel()
,则还提供了一个 cancel()
函数来停止生成。
请注意,ReadableStreamDefaultController
对象作为 start()
和 pull()
函数的参数提供。
当按下按钮时,生成停止,使用 ReadableStreamDefaultController.close()
关闭流,并运行另一个函数,该函数从流中读取数据。
js
let interval;
const stream = new ReadableStream({
start(controller) {
interval = setInterval(() => {
let string = randomChars();
// Add the string to the stream
controller.enqueue(string);
// show it on the screen
let listItem = document.createElement("li");
listItem.textContent = string;
list1.appendChild(listItem);
}, 1000);
button.addEventListener("click", () => {
clearInterval(interval);
fetchStream();
controller.close();
});
},
pull(controller) {
// We don't really need a pull in this example
},
cancel() {
// This is called if the reader cancels,
// so we should stop generating strings
clearInterval(interval);
},
});
规范
规范 |
---|
Streams 标准 # rs-default-controller-class |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。
另请参阅
- Streams API 概念
- 使用可读流
ReadableStream
- WHATWG 流可视化工具,用于对可读、可写和转换流进行基本可视化。
- Web-streams-polyfill 或 sd-streams - polyfills