1 of 20
2 of 20
3 of 20
4 of 20
5 of 20
6 of 20
7 of 20
8 of 20
9 of 20
10 of 20
11 of 20
12 of 20
13 of 20
14 of 20
15 of 20
16 of 20
17 of 20
18 of 20
19 of 20
20 of 20

doc

TransformStream

TransformStream representa uma implementação concreta do conceito de pipe chain transform.

TransformStream pode ser passado para o método ReadableStream.pipeThrough() para transformar os dados da stream de um formato para outro. Por exemplo, pode ser usado para decodificar ou codificar frames de vídeos, descompactar dados ou converter a stream de XML para JSON.

Um algoritmo de transformação pode ser informado como um argumento opcional para o objeto construtor. Se não informado, os dados não serão modificados.

TransformStream é um objeto transferível.

Construtor

TransformStream() Cria e retorna um objeto transform stream, especificando opcionalmente um transformation object e ordenando estratégias para as streams.

Propriedades

TransformStream.readable A ponta que possibilita ser realizada a leitura de um TransformStream.

TransformStream.writable A ponta que é possibilita ser realizada a escrita de um TransformStream.

Exemplos

Anything-to-uint8array stream

No exemplo a seguir, um transform stream passa por todos os blocos recebidos como valores Uint8Array.

  const transformContent = {
    start() {}, // obrigatório
    async transform(chunk, controller) {
      chunk = await chunk;
      switch (typeof chunk) {
        case 'object':
          // informa que a stream finalizou
          if (chunk === null) {
            controller.terminate();
          } else if (ArrayBuffer.isView(chunk)) {
            controller.enqueue(new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength));
          } else if (
            Array.isArray(chunk) &&
            chunk.every((value) => typeof value === 'number')
          ) {
            controller.enqueue(new Uint8Array(chunk));
          } else if (
            typeof chunk.valueOf === 'function' &&
            chunk.valueOf() !== chunk
          ) {
            this.transform(chunk.valueOf(), controller); // hack
          } else if ('toJSON' in chunk) {
            this.transform(JSON.stringify(chunk), controller);
          }
          break;
        case 'symbol':
          controller.error("Cannot send a symbol as a chunk part")
          break
        case 'undefined':
          controller.error("Cannot send undefined as a chunk part")
          break
        default:
          controller.enqueue(this.textencoder.encode(String(chunk)))
          break
      }
    },
    flush() {}
  }

  class AnyToU8Stream extends TransformStream {
    constructor() {
      super({...transformContent, textencoder: new TextEncoder()})
    }
  }

Para mais informações sobre TransformStream visite MDN Web Docs.


Não encontrou o que procurava? Abra um ticket.