Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web-APIs
  3. ReadableStream
  4. ReadableStream()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

ReadableStream: ReadableStream() Konstruktor

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Januar 2020⁩.

Hinweis: Diese Funktion ist inWeb Workers verfügbar.

DerReadableStream() Konstruktor erstellt und gibt ein lesbares Stream-Objekt aus den gegebenen Handlern zurück.

Bitte beachten Sie, dass obwohl alle Parameter technisch optional sind, das Weglassen derunderlyingSource zu einem Stream führt, der keine Quelle hat und nicht gelesen werden kann (Leser geben ein Versprechen zurück, das nie erfüllt wird).

Syntax

js
new ReadableStream()new ReadableStream(underlyingSource)new ReadableStream(underlyingSource, queuingStrategy)

Parameter

underlyingSourceOptional

Ein Objekt, das Methoden und Eigenschaften enthält, die definieren, wie sich die erstellte Stream-Instanz verhalten wird.underlyingSource kann folgendes enthalten:

start (controller)Optional

Dies ist eine Methode, die sofort aufgerufen wird, wenn das Objekt erstellt wird. Der Inhalt dieser Methode wird vom Entwickler definiert und sollte darauf abzielen, Zugriff auf die Stream-Quelle zu erhalten und alles andere zu tun, was erforderlich ist, um die Stream-Funktionalität einzurichten. Wenn dieser Prozess asynchron durchgeführt werden soll, kann er ein Versprechen zurückgeben, um Erfolg oder Misserfolg zu signalisieren. Dercontroller-Parameter, der an diese Methode übergeben wird, ist einReadableStreamDefaultController oder einReadableByteStreamController, abhängig vom Wert dertype-Eigenschaft. Dies kann vom Entwickler verwendet werden, um den Stream während der Einrichtung zu steuern.

pull (controller)Optional

Diese Methode, ebenfalls vom Entwickler definiert, wird wiederholt aufgerufen, wenn die interne Warteschlange des Streams von Chunks nicht voll ist, bis sie ihren High-Water-Mark erreicht. Wennpull() ein Versprechen zurückgibt, wird es nicht erneut aufgerufen, bis dieses Versprechen erfüllt ist; wenn das Versprechen abgelehnt wird, wird der Stream fehlerhaft. Dercontroller-Parameter, der an diese Methode übergeben wird, ist einReadableStreamDefaultController oder einReadableByteStreamController, abhängig vom Wert dertype-Eigenschaft. Dies kann vom Entwickler verwendet werden, um den Stream zu steuern, während weitere Chunks abgerufen werden. Diese Funktion wird erst aufgerufen, wennstart() erfolgreich abgeschlossen wurde. Zusätzlich wird sie nur wiederholt aufgerufen, wenn sie mindestens einen Chunk einreiht oder eine BYOB-Anforderung erfüllt; einepull()-Implementierung ohne Operation wird nicht kontinuierlich aufgerufen.

cancel (reason)Optional

Diese Methode, ebenfalls vom Entwickler definiert, wird aufgerufen, wenn die App signalisiert, dass der Stream abgebrochen werden soll (z.B. wennReadableStream.cancel() aufgerufen wird). Der Inhalt sollte alles tun, was notwendig ist, um den Zugriff auf die Stream-Quelle freizugeben. Wenn dieser Prozess asynchron ist, kann er ein Versprechen zurückgeben, um Erfolg oder Misserfolg zu signalisieren. Derreason-Parameter enthält eine Zeichenfolge, die beschreibt, warum der Stream abgebrochen wurde.

typeOptional

Diese Eigenschaft steuert, mit welcher Art von lesbarem Stream gearbeitet wird. Wenn es mit einem Wert"bytes" enthalten ist, wird das übergebene Controller-Objekt einReadableByteStreamController sein, der in der Lage ist, einen BYOB (bring your own buffer) / Byte-Stream zu handhaben. Wenn es nicht enthalten ist, wird der übergebene Controller einReadableStreamDefaultController sein.

autoAllocateChunkSizeOptional

Für Byte-Streams kann der EntwicklerautoAllocateChunkSize mit einem positiven Integer-Wert setzen, um die Auto-Allokationsfunktion des Streams zu aktivieren. Ist dies eingestellt, wird die Stream-Implementierung automatisch einen Ansichts-Puffer der angegebenen Größe inReadableByteStreamController.byobRequest zuweisen, wenn erforderlich.

Dies muss eingestellt werden, um Zero-Copy-Transfers mit einem Standard-ReadableStreamDefaultReader zu verwenden. Wenn dies nicht eingestellt ist, wird ein Standard-Reader weiterhin Daten streamen, aberReadableByteStreamController.byobRequest wird immernull sein und Übertragungen an den Verbraucher müssen über die internen Warteschlangen des Streams erfolgen.

queuingStrategyOptional

Ein Objekt, das optional eine Warteschlangenstrategie für den Stream definiert. Dies nimmt zwei Parameter an:

highWaterMark

Ein nicht-negativer Integer — dies definiert die Gesamtgröße aller Chunks, die in der internen Warteschlange enthalten sein können, bevor Backpressure angewendet wird.

size(chunk)

Eine Methode, die einen Parameterchunk enthält — diese gibt die Größe an, die für jeden Chunk in Bytes verwendet werden soll.

Hinweis:Sie könnten Ihre eigene benutzerdefiniertequeuingStrategy definieren oder eine Instanz vonByteLengthQueuingStrategy oderCountQueuingStrategyfür diesen Objektwert verwenden. Wenn keinequeuingStrategy angegeben ist, entspricht der Standardwert einerCountQueuingStrategy mit einem High-Water-Mark von

Rückgabewert

Eine Instanz desReadableStream-Objekts.

Ausnahmen

RangeError

Wird ausgelöst, wenn der übergebene Typwert weder"bytes" nochundefined ist.

Beispiele

Im folgenden einfachen Beispiel wird ein benutzerdefinierterReadableStream mit einem Konstruktor erstellt (sehen Sie sich unsereinfaches Zufallsstrombeispiel für den vollständigen Code an). Diestart()-Funktion erzeugt jede Sekunde eine zufällige Textzeichenfolge und reiht sie in den Stream ein. Einecancel()-Funktion wird ebenfalls bereitgestellt, um die Erzeugung zu stoppen, fallsReadableStream.cancel() aus irgendeinem Grund aufgerufen wird.

Wenn eine Taste gedrückt wird, wird die Erzeugung gestoppt, der Stream wird mitReadableStreamDefaultController.close() geschlossen und eine weitere Funktion wird ausgeführt, die die Daten aus dem Stream zurückliest.

js
let interval;const stream = new ReadableStream({  start(controller) {    interval = setInterval(() => {      let string = randomChars();      // Add the string to the stream      controller.enqueue(string);      // show it on the screen      let listItem = document.createElement("li");      listItem.textContent = string;      list1.appendChild(listItem);    }, 1000);    button.addEventListener("click", () => {      clearInterval(interval);      fetchStream();      controller.close();    });  },  pull(controller) {    // We don't really need a pull in this example  },  cancel() {    // This is called if the reader cancels,    // so we should stop generating strings    clearInterval(interval);  },});

Spezifikationen

Specification
Streams
# ref-for-rs-constructor⑤

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp