ReadableStreamDefaultController: close()-Methode

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

Die close()-Methode der ReadableStreamDefaultController-Schnittstelle schließt den zugehörigen Stream.

Leser können immer noch zuvor eingereihte Stücke aus dem Stream lesen, aber sobald diese gelesen sind, wird der Stream geschlossen. Wenn Sie den Stream vollständig entfernen und alle eingereihten Stücke verwerfen möchten, würden Sie ReadableStream.cancel() oder ReadableStreamDefaultReader.cancel() verwenden.

Syntax

js
close()

Parameter

Keine.

Rückgabewert

Keiner (undefined).

Ausnahmen

TypeError

Wird ausgelöst, wenn close() aufgerufen wird, während der Stream nicht lesbar ist — weil er bereits geschlossen, abgebrochen oder fehlerbehaftet ist — oder weil das Schließen von der zugrunde liegenden Quelle angefordert wurde, aber noch nicht erfolgt ist, da immer noch eingereihte Stücke zu lesen sind.

Beispiele

Im folgenden einfachen Beispiel wird ein benutzerdefinierter ReadableStream mithilfe eines Konstruktors erstellt (siehe unser Einfaches Zufallsstrom-Beispiel für den vollständigen Code). Die start()-Funktion erzeugt jede Sekunde eine zufällige Textzeichenfolge und reiht sie in den Stream ein. Eine cancel()-Funktion wird ebenfalls bereitgestellt, um die Erzeugung zu stoppen, wenn ReadableStream.cancel() aus irgendeinem Grund aufgerufen wird.

Wenn eine Taste gedrückt wird, wird die Erzeugung gestoppt, der Stream wird mit 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
# ref-for-rs-default-controller-close①

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch