Elide expose des flux en lecture, en écriture et de transformation, avec lecteurs, écrivains, contrôleurs, stratégies de mise en file, redirection (piping), duplication (tee) et itération asynchrone.
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; // trueLes flux en lecture fournissent cancel(), getReader(), pipeThrough(),
pipeTo(), tee(), l’itération asynchrone, values() et
ReadableStream.from().
WritableStream et TransformStream
Les flux en écriture fournissent abort(), close() et getWriter(). Les flux
de transformation associent une entrée accessible en écriture à une sortie
accessible en lecture.
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);La contre-pression utilise le highWaterMark et l’algorithme size
configurés. CountQueuingStrategy et ByteLengthQueuingStrategy sont des
globales.
Flux d’octets et BYOB
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]Les opérations BYOB transfèrent et détachent le tampon fourni. Réutiliser la vue d’origine lève une erreur. Les flux transférables sont pris en charge au sein d’un même realm ; le transfert entre workers reste limité.
Consultez Compression Streams pour les transformations d’octets.
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 |