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

ReadableStreamBYOBReader

O ReadableStreamBYOBReader da Stream APIs descreve um leitor para uma ReadableStream que facilita uma leitura zero-copy de uma fonte de bytes. É utilizado para transferências eficientes de dados de fontes que apresentam uma série de bytes anônimos como dados, como arquivos.

Nesse contexto, o termo BYOB significa “Traga o seu próprio buffer”.

Construtor

ReadableStreamBYOBReader() Cria e retorna uma instância de um objeto ReadableStramBYOBReader.

Propriedades

ReadableStreamBYOBReader.closed Retorna uma Promise que se realiza quando a stream fechar, ou rejeita caso a stream retorne um erro ou o lock do reader é ativado. Essa propriedade habilita a produção de códigos que respondem a um ponta do processo de streaming.

Métodos

ReadableStreamBYOBReader.cancel() Retorna uma Promise que se realiza quando uma stream é cancelada. Quando esse método é chamado, sinaliza que o consumidor perdeu o interesse na stream. O motivo será retornado para a origem.

ReadableStreamBYOBReader.read() Passa uma view que deve conter os dados, e retorna uma Promise que se realiza com o próximo conteúdo na stream, ou retorna uma rejeição com um indicativo que a stream foi fechada ou retornou um erro.

ReadableStreamBYOBReader.releaseLock() Libera o processamento de leitura da stream.

Exemplos

Crie um reader usando ReadableStream.getReader() na stream, especificando o modo byob nas opções de parâmetro.

  const reader = stream.getReader({ mode: "byob" });
  let buffer = new ArrayBuffer(4000);

Uma função que utiliza o reader é apresentada abaixo.

  readStream(reader);
  
  function readStream(reader) {
    let bytesReceived = 0;
    let offset = 0;
  
    while (offset < buffer.byteLength) {
      // read() retorna uma promise que se realiza quando um valor é recebido 
      reader.read(new Uint8Array(buffer, offset, buffer.byteLength - offset))
        .then(function processBytes({ done, value }) {
          // Result objects :
          // done  - true se a stream ja tiver passado todos os dados
          // value - alguma informação. Sempre undefined, caso done for verdadeiro.
  
          if (done) {
            // Não há mais dados na stream
            return;
          }
  
          buffer = value.buffer;
          offset += value.byteLength;
          bytesReceived += value.byteLength;
  
          // Lê mais dados e chama a função novamente
          return reader.read(new Uint8Array(buffer, offset, buffer.byteLength - offset)).then(processBytes);
        });
    }
  }

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


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