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