Spec-Zone.ru › Web APIs

ReadableStreamDefaultReader

Примечание: Эта функция доступна в Веб-воркерах.

Интерфейс ReadableStreamDefaultReader API потоков представляет собой стандартный читатель, который можно использовать для чтения данных потока, поступающих из сети (например, при запросе fetch).

ReadableStreamDefaultReader можно использовать для чтения из ReadableStream, имеющего базовый источник любого типа (в отличие от ReadableStreamBYOBReader, который можно использовать только с потоками чтения, имеющими базовый байтовый источник).

Однако следует отметить, что передача без копирования из базового источника поддерживается только для базовых байтовых источников, которые автоматически выделяют буферы. Другими словами, поток должен быть создан, указав как type="bytes", так и autoAllocateChunkSize. Для любого другого базового источника поток всегда будет удовлетворять запросам чтения данными из внутренних очередей.

Конструктор

ReadableStreamDefaultReader()

Создаёт и возвращает экземпляр объекта ReadableStreamDefaultReader.

Свойства экземпляра

ReadableStreamDefaultReader.closed Только для чтения

Возвращает Promise, который выполняется при закрытии потока или отклоняется, если поток выбросит ошибку или блокировка читателя будет освобождена. Это свойство позволяет вам написать код, реагирующий на завершение процесса потоковой передачи.

Методы экземпляра

ReadableStreamDefaultReader.cancel()

Возвращает Promise, который разрешается при отмене потока. Вызов этого метода сигнализирует о потере интереса потребителя к потоку. Переданное reason значение будет передано базовому источнику, который может или не может его использовать.

ReadableStreamDefaultReader.read()

Возвращает промис, обеспечивающий доступ к следующему фрагменту в внутренней очереди потока.

ReadableStreamDefaultReader.releaseLock()

Освобождает блокировку читателя на потоке.

Примеры

В следующем примере создаётся искусственный Response, который передает фрагменты HTML, извлеченные из другого ресурса, браузеру.

Он демонстрирует использование ReadableStream в сочетании с Uint8Array.

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" } });
});

Спецификации

Спецификация
Потоки
# default-reader-class

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
ReadableStreamDefaultReader 78 79 100 65 Нет 78 100 56 Нет 12.0 78
ReadableStreamDefaultReader 43 79 65 30 10 43 65 30 10 4.0 43
cancel 43 79 65 30 10 43 65 30 10 4.0 43
closed 43 79 65 30 10 43 65 30 10 4.0 43
read 43 79 65 30 10 43 65 30 10 4.0 43
releaseLock 43 79 65 30 10 43 65 30 10 4.0 43

См. также

  • Основные понятия API потоков
  • Использование потоков чтения
  • ReadableStream
  • Визуализатор потоков WHATWG, для базовой визуализации потоков чтения, записи и преобразования.
  • Web-streams-polyfill или sd-streams — полифилы

© 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

Spec-Zone.ru

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