← Cloudflare Workers / workers / runtime-apis / streams
ReadableStream BYOBReader
Kontext
BYOB je zkratka pro bring your own buffer (vlastní buffer). ReadableStreamBYOBReader umožňuje čtení do bufferu poskytnutého vývojářem, čímž minimalizuje kopírování.
Instance ReadableStreamBYOBReader je funkčně totožné s ReadableStreamDefaultReader s výjimkou read metoda.
A ReadableStreamBYOBReader se nevytváří pomocí svého konstruktoru. Místo toho se získává z ReadableStream:
const { readable, writable } = new TransformStream();
const reader = readable.getReader({ mode: 'byob' });Metody
-
read(bufferArrayBufferView): Promise<ReadableStreamBYOBReadResult>- Vrátí Promise s dalším dostupným blokem dat načteným do předaného bufferu.
-
readAtLeast(minElements, bufferArrayBufferView): Promise<ReadableStreamBYOBReadResult>-
Vrátí Promise s dalším dostupným blokem dat načteným do předaného bufferu. Promise se nevyřeší, dokud nebude k dispozici alespoň
minElementselementů bylo přečteno. Velikost elementu určujebufferArrayBufferView, například 4 bajty na prvek uUint32Array. Avšak méně nežminElementselementů může být vráceno, pokud bylo dosaženo konce datového proudu nebo byl podkladový proud uzavřen. Konkrétně:- Pokud
minElementsnebo více prvků je k dispozici, promise se vyřeší s{ value: <buffer view sized to bytes read>, done: false }. - Pokud stream skončí poté, co bylo přečteno nějaké množství dat, ale méně než
minElementselementů se příslib vyřeší s částečnými daty:{ value: <buffer view sized to bytes actually read>, done: false }. Další voláníreadneboreadAtLeastpoté vrátí{ value: undefined, done: true }. - Pokud stream skončí s nula dostupnými bajty (tedy stream je již na EOF), promise se vyřeší s hodnotou
{ value: <zero-length view>, done: true }. - Pokud ve streamu dojde k chybě, promise skončí odmítnutím.
minElementsmusí být alespoň 1 aminElements * elementSizenesmí přesáhnout délku v bajtechbufferArrayBufferView, nebo se promise zamítne sTypeError. ProUint8Array, velikost prvku je 1, takžeminElementsje fakticky počet bajtů.
- Pokud
-