ReadableStreamDefaultReader: метод cancel()
Примечание: Данная функция доступна в Web Workers.
Метод cancel() интерфейса ReadableStreamDefaultReader возвращает Promise, который разрешается при отмене потока. Вызов этого метода сигнализирует о потере интереса потребителя к потоку.
Отмена используется, когда вы полностью закончили работу с потоком и не нуждаетесь в дополнительных данных, даже если в очереди ожидают чанки, которые ещё не были прочитаны. Эти данные теряются после вызова cancel, и поток больше не может быть прочитан. Чтобы прочитать эти чанки и не полностью избавиться от потока, используйте ReadableStreamDefaultController.close().
Примечание: Если чтец активен, метод cancel() ведет себя так же, как и для связанного потока (ReadableStream.cancel()).
Синтаксис
cancel() cancel(reason)
Параметры
reasonНеобязательно-
Человекопонятное объяснение причины отмены. Это значение может быть или не быть использовано.
Возвращаемое значение
A Promise, который выполняется со значением, указанным в параметре reason.
Исключения
TypeError-
Объект-источник не является
ReadableStreamDefaultReader, или поток не имеет владельца.
Примеры
В следующем простом примере ранее созданный пользовательский ReadableStream считывается с помощью ReadableStreamDefaultReader, созданного с помощью getReader(). (Этот код основан на нашем примере простого случайного потока). Каждый чанк считывается последовательно и выводится на интерфейс пользователя, пока поток не будет полностью прочитан, после чего мы выходим из рекурсивной функции и выводим весь поток в другую часть интерфейса.
Когда поток закончен (if (done)), мы запускаем reader.cancel() для отмены потока, сигнализируя о том, что мы больше не нуждаемся в его использовании.
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);
});
}
Спецификации
| Спецификация |
|---|
| Потоки # ref-for-generic-reader-cancel② |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
cancel |
43 | 79 | 65 | 30 | 10 | 43 | 65 | 30 | 10 | 4.0 | 43 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/cancel