ReadableStreamDefaultReader: cancel()-Methode
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die cancel()
-Methode der ReadableStreamDefaultReader
-Schnittstelle gibt ein Promise
zurück, das aufgelöst wird, wenn der Stream abgebrochen wird. Der Aufruf dieser Methode signalisiert einem Verbraucher das Desinteresse am Stream.
cancel()
wird verwendet, wenn Sie den Stream vollständig abgeschlossen haben und keine weiteren Daten mehr benötigen, auch wenn es noch wartende Chunks gibt, die gelesen werden müssen. Diese Daten gehen verloren, nachdem cancel()
aufgerufen wurde, und der Stream ist nicht mehr lesbar. Um diese Chunks trotzdem zu lesen und den Stream nicht vollständig zu beenden, würden Sie ReadableStreamDefaultController.close()
verwenden.
Hinweis: Wenn der Reader aktiv ist, verhält sich die cancel()
-Methode genauso wie die des zugehörigen Streams (ReadableStream.cancel()
).
Syntax
cancel()
cancel(reason)
Parameter
reason
Optional-
Ein für Menschen lesbarer Grund für die Abbruche. Dieser Wert kann verwendet werden oder auch nicht.
Rückgabewert
Ein Promise
, das mit dem im reason
-Parameter angegebenen Wert erfüllt wird.
Ausnahmen
TypeError
-
Das Quellobjekt ist kein
ReadableStreamDefaultReader
, oder der Stream hat keinen Eigentümer.
Beispiele
Im folgenden einfachen Beispiel wird ein zuvor erstellter benutzerdefinierter ReadableStream
mithilfe eines ReadableStreamDefaultReader
gelesen, der mit getReader()
erstellt wurde. (Dieser Code basiert auf unserem einfachen Zufallsstream-Beispiel). Jeder Chunk wird nacheinander gelesen und in der Benutzeroberfläche ausgegeben, bis der Stream vollständig gelesen wurde. An diesem Punkt verlassen wir die rekursive Funktion und geben den gesamten Stream in einem anderen Teil der Benutzeroberfläche aus.
Wenn der Stream beendet ist (if (done)
), führen wir reader.cancel()
aus, um den Stream abzubrechen und zu signalisieren, dass wir ihn nicht mehr benötigen.
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
Specification |
---|
Streams Standard # ref-for-generic-reader-cancel② |
Browser-Kompatibilität
BCD tables only load in the browser