يكشف Elide التدفقات القابلة للقراءة والكتابة والتحويل مع القرّاء والكتّاب والمتحكمات واستراتيجيات الطوابير والتوصيل والتفريع والتكرار غير المتزامن.
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; // trueتوفر التدفقات القابلة للقراءة cancel() وgetReader() وpipeThrough()
وpipeTo() وtee() والتكرار غير المتزامن وvalues() و
ReadableStream.from().
WritableStream وTransformStream
توفر التدفقات القابلة للكتابة abort() وclose() وgetWriter().
وتقرن تدفقات التحويل مدخلًا قابلًا للكتابة بمخرج قابل للقراءة.
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);يستخدم الضغط العكسي highWaterMark وخوارزمية size المضبوطين.
وCountQueuingStrategy وByteLengthQueuingStrategy كائنان عامان.
تدفقات البايتات و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]تنقل عمليات BYOB المخزن المؤقت المقدَّم وتفصله. وإعادة استخدام العرض الأصلي ترمي خطأً. والتدفقات القابلة للنقل مدعومة ضمن النطاق نفسه؛ أما النقل بين العمال فيبقى محدودًا.
راجع تدفقات الضغط لتحويلات البايتات.
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 |