Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

ReadableStreamDefaultReader: cancel() Methode

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Januar 2020 browserübergreifend verfügbar.

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

Die cancel() Methode der ReadableStreamDefaultReader Schnittstelle gibt ein Promise zurück, das aufgelöst wird, wenn der Stream abgebrochen wird. Durch das Aufrufen dieser Methode signalisiert ein Verbraucher sein Desinteresse am Stream.

cancel() wird verwendet, wenn Sie mit dem Stream vollständig fertig sind und keine weiteren Daten daraus benötigen, selbst wenn es noch Warteschlangen gibt, die darauf warten, gelesen zu werden. Diese Daten gehen verloren, nachdem cancel aufgerufen wurde, und der Stream ist nicht mehr lesbar. Um diese Daten trotzdem zu lesen und den Stream nicht vollständig loszuwerden, würden Sie ReadableStreamDefaultController.close() verwenden.

Hinweis: Wenn der Leser aktiv ist, verhält sich die cancel() Methode genauso wie die für den zugehörigen Stream (ReadableStream.cancel()).

Syntax

js
cancel()
cancel(reason)

Parameter

reason Optional

Ein humanlesbarer Grund für die Stornierung. Dieser Wert wird möglicherweise verwendet oder nicht.

Rückgabewert

Ein Promise, das sich mit dem im reason Parameter angegebenen Wert erfüllt.

Ausnahmen

TypeError

Das Quellobjekt ist kein ReadableStreamDefaultReader, oder der Stream hat keinen Besitzer.

Beispiele

Im folgenden einfachen Beispiel wird ein zuvor erstellter benutzerdefinierter ReadableStream mit einem ReadableStreamDefaultReader gelesen, der mit getReader() erstellt wurde. (Dieser Code basiert auf unserem einfachen Zufallsstrombeispiel). Jeder Chunk wird nacheinander gelesen und in der Benutzeroberfläche ausgegeben, bis der Stream fertig gelesen ist. An diesem Punkt beenden wir die rekursive Funktion und geben den gesamten Stream an einem anderen Teil der Benutzeroberfläche aus.

Wenn der Stream fertig ist (if (done)), führen wir reader.cancel() aus, um den Stream abzubrechen, was signalisiert, dass wir ihn nicht mehr benötigen.

js
function fetchStream() {
  const reader = stream.getReader();
  let charsReceived = 0;

  // read() returns a promise that resolves
  // when a value has been received
  reader.read().then(function processText({ done, value }) {
    // Result objects contain two properties:
    // done  - true if the stream has already given you all its data.
    // value - some data. Always undefined when done is true.
    if (done) {
      console.log("Stream complete");
      reader.cancel();
      para.textContent = result;
      return;
    }

    // value for fetch streams is a Uint8Array
    charsReceived += value.length;
    const chunk = value;
    let listItem = document.createElement("li");
    listItem.textContent = `Received ${charsReceived} characters so far. Current chunk = ${chunk}`;
    list2.appendChild(listItem);

    result += chunk;

    // Read some more, and call this function again
    return reader.read().then(processText);
  });
}

Spezifikationen

Spezifikation
Streams
# ref-for-generic-reader-cancel②

Browser-Kompatibilität

Siehe auch