ReadableStream BYOBReader
BYOB is an abbreviation of bring your own buffer. A ReadableStreamBYOBReader allows reading into a developer-supplied buffer, thus minimizing copies.
An instance of ReadableStreamBYOBReader is functionally identical to ReadableStreamDefaultReader with the exception of the read method.
A ReadableStreamBYOBReader is not instantiated via its constructor. Rather, it is retrieved from a ReadableStream:
const { readable, writable } = new TransformStream();const reader = readable.getReader({ mode: 'byob' });-
read(bufferArrayBufferView): Promise<ReadableStreamBYOBReadResult>- Returns a promise with the next available chunk of data read into a passed-in buffer.
-
readAtLeast(minElements, bufferArrayBufferView): Promise<ReadableStreamBYOBReadResult>-
Returns a promise with the next available chunk of data read into a passed-in buffer. The promise will not resolve until at least
minElementselements have been read. The element size is determined bybufferArrayBufferView, for example 4 bytes per element for aUint32Array. However, fewer thanminElementselements may be returned if the end of the stream is reached or the underlying stream is closed. Specifically:- If
minElementsor more elements are available, the promise resolves with{ value: <buffer view sized to bytes read>, done: false }. - If the stream ends after some data has been read but fewer than
minElementselements, the promise resolves with the partial data:{ value: <buffer view sized to bytes actually read>, done: false }. The next call toreadorreadAtLeastwill then return{ value: undefined, done: true }. - If the stream ends with zero bytes available (that is, the stream is already at EOF), the promise resolves with
{ value: <zero-length view>, done: true }. - If the stream errors, the promise rejects.
minElementsmust be at least 1, andminElements * elementSizemust not exceed the byte length ofbufferArrayBufferView, or the promise rejects with aTypeError. For aUint8Array, element size is 1, sominElementsis effectively a byte count.
- If
-