ReadableStreamDefaultReader()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
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 Standard # ref-for-default-reader-constructor① |
浏览器兼容性
BCD tables only load in the browser