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