- Boas-vindas a Azion Docs
- Edge Application
- Edge Functions
- JavaScript Runtime APIs
- ReadableStreamBYOBReader
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.