--- title: ReadableStream slug: Web/API/ReadableStream tags: - API - Fetch - Interface - Reference - Streams translation_of: Web/API/ReadableStream ---
{{APIRef("Streams")}}{{SeeCompatTable}}
Das ReadableStream
Interface der Streams API repräsentiert einen lesbaren Datenstrom von Bytes.
ReadableStream
Interfaces.reason
Argument wird an die darunterliegende Quelle weitergegeben, welche dieses benutzen kann. mode
Option angegeben wird, und sperrt den Stream für den neuen Reader. Während der Stream gesperrt ist kann kein anderer Reader angelegt werden bis dieser freigegeben wurde.ReadableStream
zu einem gegebenen {{domxref("WritableStream")}} und gibt ein {{domxref("Promise")}} zurück welches erfüllt ist, wenn der Piping-Prozess erfolgreich beendet wurde oder verwirft es, wenn irgendein anderer Fehler auftritt.ReadableStream
in zwei neue Stream-Instanzen, auf denen parallel gelesen werden kann.getIterator
-Methode.Im folgenden Beispiel wird eine {{domxref("Response")}} erzeugt, die HTML-Fragmente einer anderen Ressource fetched und an den Browser streamt.
Dadurch wird die Benutzung von {{domxref("ReadableStream")}} in Kombination mit {{domxref("Uint8Array")}} gezeigt.
fetch("https://www.example.org/").then((response) => { const reader = response.body.getReader(); const stream = new ReadableStream({ start(controller) { // Die folgende Funktion behandelt jeden Daten-Chunk function push() { // "done" ist ein Boolean und "value" ein "Uint8Array" return reader.read().then(({ done, value }) => { // Gibt es weitere Daten zu laden? if (done) { // Teile dem Browser mit, dass wir fertig mit dem Senden von Daten sind controller.close(); return; } // Bekomme die Daten und sende diese an den Browser durch den Controller weiter controller.enqueue(value); }).then(push); }; push(); } }); return new Response(stream, { headers: { "Content-Type": "text/html" } }); });
Spezifikation | Status | Kommentar |
---|---|---|
{{SpecName('Streams','#rs-class','ReadableStream')}} | {{Spec2('Streams')}} | Initial definition |