ReadableStreamDefaultReader()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2022年5月.
ReadableStreamDefaultReader() 构造函数创建并返回一个 ReadableStreamDefaultReader 实例对象。
备注:
你通常不需要手动创建,可以使用 ReadableStream.getReader() 方法代替。
语法
js
new ReadableStreamDefaultReader(stream)
参数
stream-
将被读取的
ReadableStream。
返回值
一个 ReadableStreamDefaultReader 实例对象。
异常
TypeError-
如果提供的
stream参数不是一个ReadableStream,或者它已经被另一个 reader 锁定则抛出异常。
示例
在下面的简单示例中,使用 getReader() 创建的 ReadableStreamDefaultReader 读取先前自定义的 ReadableStream。(有关完整代码简单随机流演示)。直到流完成读取,每一个块都按顺序读取并输出到 UI,此时我们退出递归函数并且将整个流打印到 UI 的另一部分。
js
function fetchStream() {
const reader = stream.getReader();
let charsReceived = 0;
// read() 返回一个 promise,其会在接收到数据时被兑现
reader.read().then(function processText({ done, value }) {
// 结果包含两个属性:
// done - 如果为 true,表示流已经返回所有的数据。
// value - 一些数据,done 为 true 时,其值始终为 undefined。
if (done) {
console.log("Stream complete");
para.textContent = result;
return;
}
// 从流中获取的数据是一个 Uint8Array
charsReceived += value.length;
const chunk = value;
let listItem = document.createElement("li");
listItem.textContent =
"Received " +
charsReceived +
" characters so far. Current chunk = " +
chunk;
list2.appendChild(listItem);
result += chunk;
// 再次调用该函数以读取更多数据
return reader.read().then(processText);
});
}
规范
| Specification |
|---|
| Streams> # ref-for-default-reader-constructor①> |
浏览器兼容性
Loading…