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

View in English Always switch to English

ReadableStreamDefaultController: enqueue()-Methode

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Januar 2020 browserübergreifend verfügbar.

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

Die enqueue()-Methode des ReadableStreamDefaultController-Interfaces reiht einen gegebenen Chunk in den verbundenen Stream ein.

Syntax

js
enqueue(chunk)

Parameter

chunk

Der einzureihende Chunk.

Rückgabewert

Keiner (undefined).

Ausnahmen

TypeError

Wird ausgelöst, wenn enqueue() aufgerufen wird, während der Stream nicht lesbar ist — weil er bereits geschlossen, abgebrochen oder fehlerhaft ist — oder weil er durch die zugrunde liegende Quelle zum Schließen aufgefordert wurde, dies aber noch nicht getan hat, da noch Chunks zum Lesen vorhanden sind.

Beispiele

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

Wenn eine Schaltfläche gedrückt wird, wird die Generierung gestoppt, der Stream wird mittels ReadableStreamDefaultController.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

Spezifikation
Streams
# ref-for-rs-default-controller-enqueue①

Browser-Kompatibilität

Siehe auch