ReadableStreamDefaultController

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Das ReadableStreamDefaultController-Interface der Streams API repräsentiert einen Controller, der die Kontrolle über den Zustand und die interne Warteschlange eines ReadableStream ermöglicht. Standard-Controller sind für Ströme gedacht, die keine Byte-Ströme sind.

Konstruktor

Keine. ReadableStreamDefaultController-Instanzen werden automatisch während der ReadableStream-Erstellung erstellt.

Instanz-Eigenschaften

ReadableStreamDefaultController.desiredSize Nur lesbar

Gibt die gewünschte Größe zurück, die erforderlich ist, um die interne Warteschlange des Streams zu füllen.

Instanz-Methoden

ReadableStreamDefaultController.close()

Schließt den zugehörigen Stream.

ReadableStreamDefaultController.enqueue()

Stellt ein gegebenes Datenstück in den zugehörigen Stream ein.

ReadableStreamDefaultController.error()

Verursacht, dass alle zukünftigen Interaktionen mit dem zugehörigen Stream fehlerhaft sind.

Beispiele

Im folgenden einfachen Beispiel wird ein benutzerdefinierter ReadableStream unter Verwendung eines Konstruktors erstellt (siehe unser Einfaches Zufallsstrom-Beispiel für den vollständigen Code). Die start()-Funktion generiert jede Sekunde einen zufälligen Textstring und fügt ihn in den Stream ein. Eine cancel()-Funktion wird ebenfalls bereitgestellt, um die Generierung zu stoppen, wenn ReadableStream.cancel() aus irgendeinem Grund aufgerufen wird.

Beachten Sie, dass ein ReadableStreamDefaultController-Objekt als Parameter der start()- und pull()-Funktionen bereitgestellt wird.

Wenn eine Schaltfläche gedrückt wird, wird die Generierung gestoppt, der Stream wird mithilfe von ReadableStreamDefaultController.close() geschlossen, und eine andere Funktion wird ausgeführt, die die Daten wieder aus dem Stream liest.

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 Standard
# rs-default-controller-class

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch