ReadableByteStreamController
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Примечание: Эта функция доступна в Потоках выполнения веб-приложений.
Интерфейс ReadableByteStreamController API потоков представляет собой контроллер для потока байтов для чтения. Он позволяет управлять состоянием и внутренней очередью ReadableStream с базовым источником байтов и обеспечивает эффективную передачу данных без копирования из базового источника потребителю, когда внутренняя очередь потока пуста.
Экземпляр этого типа контроллера создается, если объект underlyingSource со свойством type="bytes" передается в качестве аргумента конструктору ReadableStream(). Объект underlyingSource также может определять функции обратного вызова start() и pull(). Они вызываются с контроллером в качестве параметра, чтобы настроить базовый источник и запросить данные по мере необходимости.
Базовый источник использует контроллер для передачи данных в поток через свойство byobRequest или метод enqueue(). byobRequest — это объект ReadableStreamBYOBRequest, представляющий ожидающий запрос от потребителя на передачу данных напрямую без копирования потребителю. Необходимо использовать byobRequest для копирования данных, если они существуют (не используйте enqueue() в этом случае)! Если базовому источнику необходимо передать данные в поток, а byobRequest является null, то источник может вызвать enqueue(), чтобы добавить данные в внутренние очереди потока.
Обратите внимание, что byobRequest создается только в режиме "BYOB", когда есть запрос от читателя и внутренняя очередь потока пуста. Режим "BYOB" активируется при использовании ReadableStreamBYOBReader (обычно создаваемого вызовом ReadableStream.getReader() с аргументом { mode: 'byob' }). Он также активируется при использовании стандартного читателя и указании autoAllocateChunkSize в конструкторе ReadableController().
Базовый байтовый источник также может использовать контроллер для close() потока, когда все данные отправлены, и сообщать об ошибках из базового источника с помощью error(). Свойство контроллера desiredSize используется для применения "обратной загрузки", информируя базовый источник о размере внутренней очереди (малые значения указывают, что очередь заполняется, что подразумевает для базового источника, что желательно приостановить или ограничить приток).
Обратите внимание, что, хотя контроллер в первую очередь используется базовым источником байтов, нет причин, по которым он не может храниться и использоваться другими частями системы для сигнализации потоку.
Конструктор
Нет. Экземпляры ReadableByteStreamController автоматически создаются, если объект underlyingSource со свойством type="bytes" передается в конструктор ReadableStream().
Свойства экземпляра
-
ReadableByteStreamController.byobRequestТолько для чтения -
Возвращает текущий запрос BYOB, или
nullесли нет ожидающих запросов. -
ReadableByteStreamController.desiredSizeТолько для чтения -
Возвращает необходимый желаемый размер для заполнения внутренней очереди потока.
Методы экземпляра
ReadableByteStreamController.close()-
Закрывает связанный поток.
ReadableByteStreamController.enqueue()-
Добавляет заданный фрагмент в связанный поток.
ReadableByteStreamController.error()-
Вызывает ошибку при любых будущих взаимодействиях со связанным потоком.
Примеры
Контроллер используется базовым источником для передачи или добавления данных в очередь, для сигнализации о том, что поток больше не содержит данных (закрыт) или возникла ошибка. Он также используется для сигнализации базовому источнику о желаемой скорости данных «сверху» с помощью desiredSize.
Пример в Использование потоков чтения байтов, в частности Создание потока чтения байтов через сокет, демонстрирует большинство из этих случаев.
Спецификации
| Спецификация |
|---|
| Потоки # rbs-controller-class |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
ReadableByteStreamController |
89 | 89 | 102 | 75 | Нет | 89 | 102 | 63 | Нет | 15.0 | 89 |
byobRequest |
89 | 89 | 102 | 75 | Нет | 89 | 102 | 63 | Нет | 15.0 | 89 |
close |
89 | 89 | 102 | 75 | Нет | 89 | 102 | 63 | Нет | 15.0 | 89 |
desiredSize |
89 | 89 | 102 | 75 | Нет | 89 | 102 | 63 | Нет | 15.0 | 89 |
enqueue |
89 | 89 | 102 | 75 | Нет | 89 | 102 | 63 | Нет | 15.0 | 89 |
error |
89 | 89 | 102 | 75 | Нет | 89 | 102 | 63 | Нет | 15.0 | 89 |
См. также
- Концепции 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/ReadableByteStreamController