[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/API/ReadableStream/ReadableStream#pull [Back]  [Original]

ReadableStream: ReadableStream() Konstruktor - Web-APIs | MDN

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

View in English Always switch to English

ReadableStream: ReadableStream() Konstruktor

Baseline Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Januar 2020 browserbergreifend verfgbar.

Hinweis: Diese Funktion ist in Web Workers verfgbar.

Der ReadableStream() Konstruktor erstellt und gibt ein lesbares Stream-Objekt aus den gegebenen Handlern zurck.

Bitte beachten Sie, dass obwohl alle Parameter technisch optional sind, das Weglassen der underlyingSource zu einem Stream fhrt, der keine Quelle hat und nicht gelesen werden kann (Leser geben ein Versprechen zurck, das nie erfllt wird).

In diesem Artikel

Syntax

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

Parameter

underlyingSource Optional

Ein Objekt, das Methoden und Eigenschaften enthlt, 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-Funktionalitt einzurichten. Wenn dieser Prozess asynchron durchgefhrt werden soll, kann er ein Versprechen zurckgeben, um Erfolg oder Misserfolg zu signalisieren. Der controller-Parameter, der an diese Methode bergeben wird, ist ein ReadableStreamDefaultController oder ein ReadableByteStreamController, abhngig vom Wert der type-Eigenschaft. Dies kann vom Entwickler verwendet werden, um den Stream whrend 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. Wenn pull() ein Versprechen zurckgibt, wird es nicht erneut aufgerufen, bis dieses Versprechen erfllt ist; wenn das Versprechen abgelehnt wird, wird der Stream fehlerhaft. Der controller-Parameter, der an diese Methode bergeben wird, ist ein ReadableStreamDefaultController oder ein ReadableByteStreamController, abhngig vom Wert der type-Eigenschaft. Dies kann vom Entwickler verwendet werden, um den Stream zu steuern, whrend weitere Chunks abgerufen werden. Diese Funktion wird erst aufgerufen, wenn start() erfolgreich abgeschlossen wurde. Zustzlich wird sie nur wiederholt aufgerufen, wenn sie mindestens einen Chunk einreiht oder eine BYOB-Anforderung erfllt; eine pull()-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. wenn ReadableStream.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 zurckgeben, um Erfolg oder Misserfolg zu signalisieren. Der reason-Parameter enthlt eine Zeichenfolge, die beschreibt, warum der Stream abgebrochen wurde.

type Optional

Diese Eigenschaft steuert, mit welcher Art von lesbarem Stream gearbeitet wird. Wenn es mit einem Wert "bytes" enthalten ist, wird das bergebene Controller-Objekt ein ReadableByteStreamController 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 ein ReadableStreamDefaultController sein.

autoAllocateChunkSize Optional

Fr Byte-Streams kann der Entwickler autoAllocateChunkSize 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 Gre in ReadableByteStreamController.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, aber ReadableByteStreamController.byobRequest wird immer null sein und bertragungen an den Verbraucher mssen ber die internen Warteschlangen des Streams erfolgen.

queuingStrategy Optional

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

highWaterMark

Ein nicht-negativer Integer dies definiert die Gesamtgre aller Chunks, die in der internen Warteschlange enthalten sein knnen, bevor Backpressure angewendet wird.

size(chunk)

Eine Methode, die einen Parameter chunk enthlt diese gibt die Gre an, die fr jeden Chunk in Bytes verwendet werden soll.

Hinweis: Sie knnten Ihre eigene benutzerdefinierte queuingStrategy definieren oder eine Instanz von ByteLengthQueuingStrategy oder CountQueuingStrategy fr diesen Objektwert verwenden. Wenn keine queuingStrategy angegeben ist, entspricht der Standardwert einer CountQueuingStrategy mit einem High-Water-Mark von

Rckgabewert

Eine Instanz des ReadableStream-Objekts.

Ausnahmen

RangeError

Wird ausgelst, wenn der bergebene Typwert weder "bytes" noch undefined ist.

Beispiele

Im folgenden einfachen Beispiel wird ein benutzerdefinierter ReadableStream mit einem Konstruktor erstellt (sehen Sie sich unser einfaches Zufallsstrombeispiel fr den vollstndigen Code an). Die start()-Funktion erzeugt jede Sekunde eine zufllige Textzeichenfolge und reiht sie in den Stream ein. Eine cancel()-Funktion wird ebenfalls bereitgestellt, um die Erzeugung zu stoppen, falls ReadableStream.cancel() aus irgendeinem Grund aufgerufen wird.

Wenn eine Taste gedrckt wird, wird die Erzeugung gestoppt, der Stream wird mit ReadableStreamDefaultController.close() geschlossen und eine weitere Funktion wird ausgefhrt, die die Daten aus dem Stream zurckliest.

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

Spezifikation
Streams
# ref-for-rs-constructor

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page