ReadableStreamDefaultController

Hinweis: Diese Funktion ist in Web Workers verfügbar.

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 Schreibgeschützt

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

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
ReadableStreamDefaultController
close
desiredSize
enqueue
error

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
Has more compatibility info.

Siehe auch