ReadableStream

Experimental

Dies ist eine experimentelle Technologie
Da diese Technologie noch nicht definitiv implementiert wurde, sollte die Browserkompatibilit├Ąt beachtet werden. Es ist auch m├Âglich, dass die 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() (en-US)
Erstellt eine Instanz des ReadableStream Interfaces.

Eigenschaften

ReadableStream.locked (en-US) Schreibgesch├╝tzt
Gibt zur├╝ck, ob der Stream bereits f├╝r einen Reader gesperrt ist.

Methoden

ReadableStream.cancel() (en-US)
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() (en-US)
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.getIterator()
Erstellt einen asyncronen ReadableStream-Iterator und sperrt den Stream f├╝r ihn, sodass der Iterator der einzige Leser ist. W├Ąhrend der Stream gesperrt ist kann kein anderer Reader angelegt werden bis dieser freigegeben wurde.
ReadableStream.pipeThrough() (en-US)
Bietet die M├Âglichkeit den Stream mit transformierenden Streams zu verketten.
ReadableStream.pipeTo() (en-US)
Pipet den aktuellen ReadableStream zu einem gegebenen WritableStream (en-US) und gibt ein Promise (en-US) zur├╝ck welches erf├╝llt ist, wenn der Piping-Prozess erfolgreich beendet wurde oder verwirft es, wenn irgendein anderer Fehler auftritt.
ReadableStream.tee() (en-US)
Verzweigt den ReadableStream in zwei neue Stream-Instanzen, auf denen parallel gelesen werden kann.
ReadableStream[@@asyncIterator]()
Alias der getIterator-Methode.

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 (en-US) 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

Browserkompatibilit├Ąt

BCD tables only load in the browser