WritableStream
Baseline 广泛可用 *
注意:此功能在 Web Workers 中可用。
WritableStream 接口是 Streams API 的一部分,它提供了一个标准的抽象,用于将流式数据写入一个称为“接收器”(sink)的目标。该对象内置了反压和队列机制。
WritableStream 是一个 可转移对象。
构造函数
WritableStream()-
创建一个新的
WritableStream对象。
实例属性
WritableStream.locked只读-
一个布尔值,指示
WritableStream是否已锁定到一个写入器。
实例方法
WritableStream.abort()-
中止流,通知生产者无法再成功写入流,并且流将立即进入错误状态,丢弃所有排队的写入操作。
WritableStream.close()-
关闭流。
WritableStream.getWriter()-
返回一个
WritableStreamDefaultWriter的新实例,并将流锁定到该实例。在流被锁定的期间,在当前写入器释放之前,无法获取其他写入器。
示例
下面的示例演示了此接口的几个功能。它使用自定义接收器创建 WritableStream。然后调用流的 getWriter() 方法,该方法返回一个 WritableStreamDefaultWriter 的实例。接下来,向流写入几个字符串。最后,close() 返回一个 Promise,该 Promise 在所有写入成功完成后解析。
js
const writableStream = new WritableStream(
// Implement the sink
{
write(chunk) {
const textElement = document.getElementById("text-output");
textElement.textContent += chunk;
},
},
);
const writer = writableStream.getWriter();
try {
writer.write("Hello, ");
writer.write("world!\n");
writer.write("This has been a demo!\n");
await writer.close(); // wait for all chunks to be written
console.log("All chunks written");
} catch (error) {
console.error("Stream error: ", error);
}
此示例不支持 Streams 的 反压 功能。
规范
| 规范 |
|---|
| Streams # ws-class |
浏览器兼容性
加载中…