Spec-Zone.ru › Web APIs

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

См. также

  • ReadableStreamDefaultReader() конструктор
  • Использование потоков для чтения

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API