Spec-Zone.ru › Web APIs

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

Spec-Zone.ru

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