TransformStream: Конструктор TransformStream()
Примечание: Эта функция доступна в Потоках выполнения в браузере.
Конструктор TransformStream() создаёт новый объект TransformStream, представляющий пару потоков: WritableStream, представляющий запись, и ReadableStream, представляющий чтение.
Синтаксис
new TransformStream() new TransformStream(transformer) new TransformStream(transformer, writableStrategy) new TransformStream(transformer, writableStrategy, readableStrategy)
Параметры
transformerНеобязательный-
Объект, представляющий
transformer. Если не указан, результирующий поток будет потоком преобразования тождества, который передаёт все блоки, записанные в его поток записи, в его поток чтения без изменений.Объект преобразователя может содержать любые из следующих методов. В каждом методе
controller— экземплярTransformStreamDefaultController.start(controller)-
Вызывается при создании
TransformStream. Обычно используется для помещения блоков в очередь с помощьюTransformStreamDefaultController.enqueue(). transform(chunk, controller)-
Вызывается, когда блок, записанный в поток записи, готов к преобразованию, и выполняет работу потока преобразования. Может возвращать промис для сигнализации об успехе или неудаче операции записи. Если метод
transform()не указан, используется преобразование тождества, и блок помещается в очередь без изменений. flush(controller)-
Вызывается после того, как все блоки, записанные в поток записи, были успешно преобразованы, и поток записи собирается закрыться.
writableStrategyНеобязательный-
Объект, который необязательно определяет стратегию очереди для потока. Он принимает два параметра:
highWaterMark-
Целое неотрицательное число. Определяет общее количество блоков, которое может содержать внутренняя очередь, прежде чем будет применено ограничение по вводу-выводу.
size(chunk)-
Метод, содержащий параметр
chunk. Он указывает размер, используемый для каждого блока в байтах.
readableStrategyНеобязательный-
Объект, который необязательно определяет стратегию очереди для потока. Он принимает два параметра:
highWaterMark-
Целое неотрицательное число. Определяет общее количество блоков, которое может содержать внутренняя очередь, прежде чем будет применено ограничение по вводу-выводу.
size(chunk)-
Метод, содержащий параметр
chunk. Он указывает размер, используемый для каждого блока в байтах.
Примечание: Вы можете определить собственный пользовательский readableStrategy или writableStrategy, или использовать экземпляр ByteLengthQueuingStrategy или CountQueuingStrategy для значений объектов.
Примеры
Преобразование текста в верхний регистр
Следующий пример преобразует текст в верхний регистр блок за блоком. Этот пример взят из Руководства по потокам, которое содержит множество примеров различных типов потоков.
function upperCaseStream() {
return new TransformStream({
transform(chunk, controller) {
controller.enqueue(chunk.toUpperCase());
},
});
}
function appendToDOMStream(el) {
return new WritableStream({
write(chunk) {
el.append(chunk);
},
});
}
fetch("./lorem-ipsum.txt").then((response) =>
response.body
.pipeThrough(new TextDecoderStream())
.pipeThrough(upperCaseStream())
.pipeTo(appendToDOMStream(document.body)),
);
Создание потока преобразования тождества
Если параметр transformer не указан, то результатом будет поток преобразования тождества, который передаёт все блоки, записанные в поток записи, в поток чтения без изменений. В следующем примере используется поток преобразования тождества для добавления буферизации в конвейер.
const writableStrategy = new ByteLengthQueuingStrategy({
highWaterMark: 1024 * 1024,
});
readableStream
.pipeThrough(new TransformStream(undefined, writableStrategy))
.pipeTo(writableStream);
Спецификации
| Спецификация |
|---|
| Потоки # ref-for-ts-constructor④ |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
TransformStream |
67 | 79 | 102 | 54 | 14.1 | 67 | 102 | 48 | 14.5 | 9.0 | 67 |
transformer_cancel |
Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
© 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/TransformStream/TransformStream