Diese Übersetzung ist unvollständig. Bitte helfen Sie, diesen Artikel aus dem Englischen zu übersetzen.

Dies ist eine experimentelle Technologie
Da diese Technologie noch nicht definitiv implementiert wurde, sollte die Browser Kompatibilität beachtet werden. Es ist auch möglich, dass der Syntax in einer späteren Spezifikation noch geändert wird.

Das ReadableStream Interface der Streams API repräsentiert einen lesbaren Datenstrom von Bytes.

Konstruktor

ReadableStream()
Erstellt eine Instanz des ReadableStream Interfaces.

Eigenschaften

ReadableStream.locked Read only
Gibt zurück, ob der Stream bereits für einen Reader gesperrt ist.

Methoden

ReadableStream.cancel()
Bricht den Stream ab und signalisiert dadurch, dass der Konsument sein Interesse am Stream verloren hat. Das angegebene reason Argument wird an die darunterliegende Quelle weitergegeben, welche dieses benutzen kann. 
ReadableStream.getReader()
Erstellt einen Reader, dessen Typ durch die 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.pipeThrough()
Bietet die Möglichkeit den Stream mit transformierenden Streams zu verketten.
ReadableStream.pipeTo()
Pipet den aktuellen ReadableStream zu einem gegebenen WritableStream und gibt ein Promise zurück welches erfüllt ist, wenn der Piping-Prozess erfolgreich beendet wurde oder verwirft es, wenn irgendein anderer Fehler auftritt.
ReadableStream.tee()
Verzweigt den ReadableStream in zwei neue Stream-Instanzen, auf denen parallel gelesen werden kann.

Benutzung

Im folgenden Beispiel wird eine Response erzeugt, die HTML-Fragmente einer anderen Ressource fetched und an den Browser streamt.

Dadurch wird die Benutzung von ReadableStream in Kombination mit 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" } });
});

Spezifikationen

Spezifikation Status Kommentar
Streams
Die Definition von 'ReadableStream' in dieser Spezifikation.
Lebender Standard Initial definition

Browser Compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support

52

? ?

39

?
pipeThrough and pipeTo methods 59 ? ? 46 ?
Feature Android Webview Chrome for Android Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile
Basic support 52 52 ? ? ? 39 ?
pipeThrough and pipeTo methods 59 59 ? ? ? 46 ?

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
 Mitwirkende an dieser Seite: ksm2
 Zuletzt aktualisiert von: ksm2,