ReadableStreamDefaultController
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Januar 2020.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Das ReadableStreamDefaultController
-Interface der Streams API repräsentiert einen Controller, der die Steuerung des Zustands eines ReadableStream
und dessen interner Warteschlange ermöglicht. Standard-Controller sind für Streams, die keine Byte-Streams sind.
Konstruktor
Keiner. ReadableStreamDefaultController
-Instanzen werden automatisch während der Konstruktion eines ReadableStream
erstellt.
Instanzeigenschaften
ReadableStreamDefaultController.desiredSize
Schreibgeschützt-
Gibt die gewünschte Größe zurück, die erforderlich ist, um die interne Warteschlange des Streams zu füllen.
Instanzmethoden
ReadableStreamDefaultController.close()
-
Schließt den zugehörigen Stream.
ReadableStreamDefaultController.enqueue()
-
Stellt einen gegebenen Block in der zugehörigen Stream-Warteschlange ein.
ReadableStreamDefaultController.error()
-
Verursacht, dass alle zukünftigen Interaktionen mit dem zugehörigen Stream fehlschlagen.
Beispiele
Im folgenden einfachen Beispiel wird ein benutzerdefinierter ReadableStream
mit einem Konstruktor erstellt (sehen Sie sich unser einfaches Beispiel für einen zufälligen Stream für den vollständigen Code an). Die start()
-Funktion generiert jede Sekunde eine zufällige Textzeichenfolge und stellt sie 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 Funktionen start()
und pull()
bereitgestellt wird.
Wenn eine Schaltfläche gedrückt wird, wird die Generierung gestoppt, der Stream wird mit ReadableStreamDefaultController.close()
geschlossen, und eine andere Funktion wird ausgeführt, die die Daten wieder aus dem Stream liest.
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
Loading…