Spec-Zone.ru › Web APIs

ReadableStream: метод pipeThrough()

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

Метод pipeThrough() интерфейса ReadableStream предоставляет цепной способ передачи текущего потока через поток преобразования или любую другую пару потоков «ввод/вывод».

Передача потока обычно блокирует его на время передачи, предотвращая блокировку другими читателями.

Синтаксис

pipeThrough(transformStream)
pipeThrough(transformStream, options)

Параметры

transformStream

Объект TransformStream (или объект со структурой {writable, readable}) состоящий из потока чтения и потока записи, работающих совместно для преобразования данных из одной формы в другую. Данные, записанные в поток writable могут быть прочитаны в преобразованном виде потоком readable. Например, в TextDecoder байты записываются, а строки считываются, в то время как декодер видео записывает закодированные байты и считывает из них несжатые видеокадры.

options Необязательно

Параметры, которые должны быть использованы при передаче в поток writable. Доступные параметры:

preventClose

Если это значение установлено в true, закрытие исходного потока ReadableStream больше не будет приводить к закрытию целевого потока WritableStream.

preventAbort

Если это значение установлено в true, ошибки в исходном потоке ReadableStream больше не будут прерывать целевой поток WritableStream.

preventCancel

Если это значение установлено в true, ошибки в целевом потоке WritableStream больше не будут отменять исходный поток ReadableStream.

signal

Если установлено в объект AbortSignal, операции передачи могут быть прерваны с помощью соответствующего объекта AbortController.

Возвращаемое значение

readable сторона потока transformStream.

Исключения

TypeError

Выбрасывается, если свойство writable и/или readable объекта transformStream не определены.

Примеры

В следующем примере (см. Распаковать фрагменты PNG для полного кода, выполняющегося в режиме реального времени, и png-transform-stream для исходного кода) изображение загружается, а его тело извлекается в виде ReadableStream.

Далее, мы выводим содержимое потока чтения, используем pipeThrough() для передачи его в новую функцию, которая создаёт оттенок серого изображения, и затем выводим содержимое нового потока.

// Fetch the original image
fetch("png-logo.png")
  // Retrieve its body as ReadableStream
  .then((response) => response.body)
  .then((rs) => logReadableStream("Fetch Response Stream", rs))
  // Create a gray-scaled PNG stream out of the original
  .then((body) => body.pipeThrough(new PNGTransformStream()))
  .then((rs) => logReadableStream("PNG Chunk Stream", rs));

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

Спецификация
Потоки
# ref-for-rs-pipe-through②

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
pipeThrough 59 79 102 46 10.1 59 102 43 10.3 7.0 59

См. также

  • ReadableStream() конструктор
  • Цепочки передачи

© 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/ReadableStream/pipeThrough

Spec-Zone.ru

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