Elide stellt lesbare, beschreibbare und transformierende Streams mit Readern, Writern, Controllern, Queuing-Strategien, Piping, Teeing und asynchroner Iteration bereit.
ReadableStream
const stream = new ReadableStream({
start(controller) {
controller.enqueue("hello");
controller.enqueue("world");
controller.close();
},
});
const reader = stream.getReader();
(await reader.read()).value; // "hello"
(await reader.read()).value; // "world"
(await reader.read()).done; // trueLesbare Streams bieten cancel(), getReader(), pipeThrough(), pipeTo(),
tee(), asynchrone Iteration, values() und ReadableStream.from().
WritableStream und TransformStream
Beschreibbare Streams bieten abort(), close() und getWriter().
Transformierende Streams verbinden eine beschreibbare Eingabe mit einer lesbaren
Ausgabe.
const upper = new TransformStream({
transform(chunk, controller) {
controller.enqueue(chunk.toUpperCase());
},
});
const source = ReadableStream.from(["hello"]);
const destination = new WritableStream({
write(chunk) {
console.log(chunk); // HELLO
},
});
await source.pipeThrough(upper).pipeTo(destination);Backpressure verwendet das konfigurierte highWaterMark und den
size-Algorithmus. CountQueuingStrategy und ByteLengthQueuingStrategy sind
Globals.
Byte- und BYOB-Streams
const bytes = new ReadableStream({
type: "bytes",
start(controller) {
controller.enqueue(new Uint8Array([1, 2, 3]));
controller.close();
},
});
const reader = bytes.getReader({ mode: "byob" });
const target = new Uint8Array(8);
const pending = reader.read(target);
target.buffer.byteLength; // 0: transferred immediately
const { value } = await pending;
Array.from(value); // [1, 2, 3]BYOB-Operationen übertragen und lösen den übergebenen Buffer. Die Wiederverwendung der ursprünglichen View wirft. Übertragbare Streams werden innerhalb desselben Realms unterstützt; die Übertragung zwischen Workern bleibt eingeschränkt.
Byte-Transformationen sind unter Compression Streams beschrieben.
Reference
Status: Full · Not measured · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
ReadableStream | class | Full | locked, cancel(), getReader(), pipeThrough(), pipeTo(), tee() |
ReadableStreamDefaultReader | class | Full | closed, read(), releaseLock(), cancel() |
ReadableStreamDefaultController | class | Full | desiredSize, close(), enqueue(), error() |
ReadableStreamBYOBReader | class | Full | closed, read(), releaseLock(), cancel() |
ReadableByteStreamController | class | Full | byobRequest, desiredSize, close(), enqueue(), error() |
ReadableStreamBYOBRequest | class | Full | view, respond(), respondWithNewView() |
WritableStream | class | Full | locked, abort(), close(), getWriter() |
WritableStreamDefaultWriter | class | Full | closed, desiredSize, ready, abort(), close(), releaseLock(), write() |
WritableStreamDefaultController | class | Full | signal, error() |
TransformStream | class | Full | readable, writable |
TransformStreamDefaultController | class | Full | desiredSize, enqueue(), error(), terminate() |
CountQueuingStrategy | class | Full | highWaterMark, size |
ByteLengthQueuingStrategy | class | Full | highWaterMark, size |