ReadableStreamDefaultReader

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

* Some parts of this feature may have varying levels of support.

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

Das ReadableStreamDefaultReader Interface der Streams API repräsentiert einen Standardleser, der verwendet werden kann, um Datenströme zu lesen, die von einem Netzwerk bereitgestellt werden (wie bei einer fetch-Anfrage).

Ein ReadableStreamDefaultReader kann zum Lesen eines ReadableStream verwendet werden, das eine zugrunde liegende Quelle beliebigen Typs hat (im Gegensatz zu einem ReadableStreamBYOBReader, der nur mit lesbaren Streams verwendet werden kann, die eine zugrunde liegende Bytequelle haben).

Beachten Sie jedoch, dass ein Zero-Copy-Transfer von einer zugrunde liegenden Quelle nur für zugrunde liegende Bytequellen unterstützt wird, die automatisch Puffer zuweisen. Mit anderen Worten, der Stream muss konstruiert worden sein, indem sowohl type="bytes" als auch autoAllocateChunkSize angegeben wurden. Für jede andere zugrunde liegende Quelle wird der Stream immer Leseanforderungen mit Daten aus internen Warteschlangen erfüllen.

Konstruktor

ReadableStreamDefaultReader()

Erstellt und gibt eine ReadableStreamDefaultReader-Objektinstanz zurück.

Instanzeigenschaften

ReadableStreamDefaultReader.closed Schreibgeschützt

Gibt ein Promise zurück, das erfüllt wird, wenn der Stream schließt, oder verworfen wird, wenn der Stream einen Fehler auslöst oder die Sperre des Lesers freigegeben wird. Diese Eigenschaft ermöglicht es Ihnen, Code zu schreiben, der auf das Ende des Streaming-Prozesses reagiert.

Instanzmethoden

ReadableStreamDefaultReader.cancel()

Gibt ein Promise zurück, das aufgelöst wird, wenn der Stream abgebrochen wird. Der Aufruf dieser Methode signalisiert das Desinteresse eines Verbrauchers am Stream. Das angegebene reason-Argument wird der zugrunde liegenden Quelle übergeben, die es möglicherweise verwenden kann oder nicht.

ReadableStreamDefaultReader.read()

Gibt ein Promise zurück, das Zugriff auf das nächste Stück in der internen Warteschlange des Streams bietet.

ReadableStreamDefaultReader.releaseLock()

Gibt die Sperre des Lesers auf den Stream frei.

Beispiele

Im folgenden Beispiel wird eine künstliche Response erstellt, um HTML-Fragmente, die von einer anderen Ressource abgerufen wurden, an den Browser zu streamen.

Es zeigt die Verwendung eines ReadableStream in Kombination mit einem Uint8Array.

js
fetch("https://www.example.org/").then((response) => {
  const reader = response.body.getReader();
  const stream = new ReadableStream({
    start(controller) {
      // The following function handles each data chunk
      function push() {
        // "done" is a Boolean and value a "Uint8Array"
        return reader.read().then(({ done, value }) => {
          // Is there no more data to read?
          if (done) {
            // Tell the browser that we have finished sending data
            controller.close();
            return;
          }

          // Get the data and send it to the browser via the controller
          controller.enqueue(value);
          push();
        });
      }

      push();
    },
  });

  return new Response(stream, { headers: { "Content-Type": "text/html" } });
});

Spezifikationen

Specification
Streams
# default-reader-class

Browser-Kompatibilität

Siehe auch