read()
`ReadableStreamDefaultReader` 接口的 `read()` 方法返回一个 promise,用于访问流内部队列中的下一个数据块。
返回值
一个 promise,根据流的状态解析或拒绝并返回一个值
- 如果一个数据块可用,promise 会解析为一个形如
{ done: false, value: chunkValue }
的对象。 - 如果流已关闭且没有更多数据可用,promise 会解析为一个形如
{ done: true, value: undefined }
的对象。 - 如果流出错,promise 会以导致流出错的错误进行拒绝。
异常
异常 | 描述 |
---|---|
TypeError | 源对象不是 ReadableStreamDefaultReader 时抛出,或者流没有所有者,或者调用了 ReadableStreamDefaultReader.releaseLock() 时抛出。 |
示例
import { ReadableStream } from 'k6/experimental/streams';
import { setTimeout } from 'k6/timers';
export default async function () {
// Define a number stream that emits numbers from 1 to 10 every second
const stream = numbersStream();
// We use the getReader method to create a reader and lock the stream to it
const reader = stream.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) break;
console.log(`received number ${value} from stream`);
}
}
function numbersStream() {
let currentNumber = 0;
return new ReadableStream({
start(controller) {
const fn = () => {
if (currentNumber < 10) {
controller.enqueue(++currentNumber);
setTimeout(fn, 1000);
return;
}
controller.close();
};
setTimeout(fn, 1000);
},
});
}