ReadableStream
A interface ReadableStream do Azion Runtime: o construtor, a propriedade locked e os métodos que leem, cancelam, canalizam e dividem um stream.
A interface ReadableStream faz parte da Streams API do Azion Runtime. Ela lê um stream de dados um chunk de cada vez, como os dados em bytes do corpo de uma resposta. A Fetch API fornece uma instância específica de ReadableStream: a propriedade body de um objeto Response. Para mais informações, consulte ReadableStream na MDN Web Docs.
Construtor
O construtor ReadableStream() cria e retorna um objeto readable stream a partir dos handlers que você passa para ele:
O objeto handlers aceita um método start(controller) e um método cancel(reason). Em start(), controller.enqueue() adiciona um chunk ao stream e controller.close() encerra o stream. O método cancel() recebe o motivo passado para stream.cancel(). Os chunks não se limitam a bytes: um stream que você constrói pode carregar strings ou números. Para criar um stream de bytes, adicione type: 'bytes' ao objeto handlers. A seção Exemplo mostra um stream construído dessa forma.
Propriedades
| Propriedade | Tipo | Descrição |
|---|---|---|
locked | Boolean | true enquanto um reader mantém o stream. É false antes de getReader() e depois que o reader chama releaseLock(). |
Métodos
| Método | Descrição |
|---|---|
stream.cancel(reason) | Retorna uma promise que resolve quando o stream é cancelado. Uma chamada sinaliza que o consumidor perdeu o interesse no stream. O handler cancel() do stream recebe reason e pode usá-lo ou ignorá-lo. |
stream.getReader() | Cria um reader e bloqueia o stream para ele. Enquanto o stream está bloqueado, você não consegue obter outro reader até que o primeiro seja liberado. Para os métodos do reader, consulte ReadableStreamDefaultReader. |
stream.pipeThrough(transform) | Canaliza o stream por um transform stream, ou por qualquer outro par de um writable stream e um readable stream, e retorna o lado readable. A chamada é encadeável. |
stream.pipeTo(destination) | Canaliza o stream para um WritableStream. Retorna uma promise que é cumprida quando a canalização termina, ou que é rejeitada quando ocorre um erro. |
stream.tee() | Divide o stream em duas ramificações e as retorna como um array de duas instâncias de ReadableStream. Cada ramificação recebe os mesmos chunks. |
ReadableStream também implementa o protocolo iterável assíncrono, então um loop for await…of lê os chunks de um stream em ordem.
Exemplo
Este handler constrói um stream de dois chunks, lê o stream com um reader, libera o reader e retorna o valor de locked em cada etapa com os três resultados de read():
A function retorna estes valores. O terceiro read() informa done como true depois que o stream é encerrado, e "[undefined]" marca o value dele, que é undefined: