# ReadableStreamDefaultReader

**ReadableStreamDefaultReader** é um leitor padrão usado para ler dados de um *stream* vindos de uma rede, como em requisições *fetch*.

Em contraste com um [ReadableStreamBYOBReader](/pt-br/documentacao/produtos/applications/functions/runtime-apis/javascript/readable-byob-reader/), que só funciona caso a *stream* tenha uma fonte de bytes, o ReadableStreamDefaultReader pode ser usado para qualquer tipo de fonte de *Readable Stream*.

## Construtor

[ReadableStreamDefaultReader()](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/ReadableStreamDefaultReader)
Cria e retorna uma instância do objeto ReadableStreamDefaultReader.

## Propriedades

[ReadableStreamDefaultReader.closed](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/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 uma ponta do processo de *streaming*.

## Métodos

[ReadableStreamDefaultReader.cancel()](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/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.

[ReadableStreamDefaultReader.read()](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/read)
Retorna uma *promise* que permite o acesso ao próximo carregamento na fila interna da *stream*

[ReadableStreamDefaultReader.releaseLock()](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/releaseLock)
Libera o processamento de leitura da *stream*.

## Exemplos

No exemplo a seguir, uma resposta artificial é criada para fazer uma *stream* de fragmentos de HTML vindos de outra fonte para o navegador.

```js
fetch("https://www.example.org/").then((response) => {
  const reader = response.body.getReader();
  const stream = new ReadableStream({
    start(controller) {
      //    A função a seguir lida com os blocos de dados
      function push() {
        // "done" é um boolean e um valor "Uint8Array"
        return reader.read().then(({ done, value }) => {
          if (done) {
            // Avisa o navegador que terminou o processo
            controller.close();
            return;
          }
          // Pega os dados e envia para o navegador
          controller.enqueue(value);
          push();
        });
      };

      push();
    }
  });

  return new Response(stream, { headers: { "Content-Type": "text/html" } });
});
```

Para mais informações sobre [ReadableStreamDefaultReader](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader) visite MDN Web Docs.





---