Streams API

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

Die Streams-API ermöglicht es JavaScript, programmatisch auf Datenströme zuzugreifen, die über das Netzwerk empfangen werden, und sie nach den Wünschen des Entwicklers zu verarbeiten.

Konzepte und Nutzung

Streaming beinhaltet das Aufteilen einer Ressource, die über ein Netzwerk empfangen werden soll, in kleine Stücke und das schrittweise Verarbeiten. Browser tun dies bereits beim Empfang von Medieninhalten – Videos werden gepuffert und abgespielt, während mehr Inhalt heruntergeladen wird, und manchmal werden Bilder schrittweise angezeigt, wenn mehr geladen wird.

Diese Fähigkeit war jedoch nie zuvor für JavaScript verfügbar. Bisher mussten wir, wenn wir eine Ressource irgendeiner Art (Video, Textdatei usw.) verarbeiten wollten, die gesamte Datei herunterladen, warten, bis sie in ein geeignetes Format deserialisiert wurde, und dann alle Daten verarbeiten.

Mit der Streams-API können Sie rohe Daten mit JavaScript Schritt für Schritt verarbeiten, sobald sie verfügbar sind, ohne dass ein Puffer, String oder Blob erstellt werden muss.

Das grundlegende Konzept der Streams-API ist, dass Daten über mehrere Datenpakete aus dem Netzwerk geholt werden. Die Daten werden verarbeitet und dann als Datenpaketstrom an den Browser gesendet.

Weitere Vorteile sind, dass Sie erkennen können, wann Streams beginnen oder enden, Streams miteinander verketten, Fehler behandeln und Streams bei Bedarf abbrechen sowie auf die Geschwindigkeit reagieren können, mit der der Stream gelesen wird.

Die Nutzung von Streams beruht darauf, Antworten als Streams verfügbar zu machen. Zum Beispiel ist der Antwortkörper, der von einer erfolgreichen Fetch-Anfrage zurückgegeben wird, ein ReadableStream, der von einem mit ReadableStream.getReader() erstellten Leser gelesen werden kann.

Komplexere Anwendungen umfassen die Erstellung eines eigenen Streams mit dem ReadableStream()-Konstruktor, um beispielsweise Daten innerhalb eines Service Workers zu verarbeiten.

Sie können auch Daten in Streams mit