WritableStreamDefaultWriter

WritableStreamDefaultWriter é uma interface que é invocada por WritableStream.getWriter().

WritableStreamDefaultWriter() Cria uma nova instância do objeto WritableStreamDefaultWriter.

WritableStreamDefaultWriter.closed Permite o desenvolvimento de códigos que respondem a uma ponta do processo de stream. Retorna uma promise que se concretiza quando uma stream é fechada, ou uma rejeição caso ocorra algum erro.

WritableStreamDefaultWriter.desiredSize Retorna o tamanho definido para a fila interna da stream.

WritableStreamDefaultWriter.ready Retorna uma promise que se resolve quando o tamanho desejado da fila interna da stream muda de não positivo para positivo, sinalizando que não está mais aplicando contrapressão.

WritableStreamDefaultWriter.abort() Aborta a stream.

WritableStreamDefaultWriter.close() Fecha a writable stream associada.

WritableStreamDefaultWriter.releaseLock() Libera a stream correspondente.

WritableStreamDefaultWriter.write Escreve um bloco de dados para uma WritableStream.

O exemplo a seguir mostra a criação de uma WritableStream:

const list = document.querySelector('ul');
function sendMessage(message, writableStream) {
// defaultWriter é do tipo WritableStreamDefaultWriter
const defaultWriter = writableStream.getWriter();
const encoder = new TextEncoder();
const encoded = encoder.encode(message, { stream: true });
encoded.forEach((chunk) => {
defaultWriter.ready
.then(() => defaultWriter.write(chunk))
.then(() => {
console.log("Chunk written to sink.");
})
.catch((err) => {
console.log("Chunk error:", err);
});
});
defaultWriter.ready
.then(() => {
defaultWriter.close();
})
.then(() => {
console.log("All chunks written");
})
.catch((err) => {
console.log("Stream error:", err);
});
}
const decoder = new TextDecoder("utf-8");
const queuingStrategy = new CountQueuingStrategy({ highWaterMark: 1 });
let result = "";
const writableStream = new WritableStream({
write(chunk) {
return new Promise((resolve, reject) => {
const buffer = new ArrayBuffer(1);
const view = new Uint8Array(buffer);
view[0] = chunk;
const decoded = decoder.decode(view, { stream: true });
const listItem = document.createElement('li');
listItem.textContent = `Chunk decoded: ${decoded}`;
list.appendChild(listItem);
result += decoded;
resolve();
});
},
close() {
const listItem = document.createElement('li');
listItem.textContent = `[MESSAGE RECEIVED] ${result}`;
list.appendChild(listItem);
},
abort(err) {
console.log("Sink error:", err);
}
}, queuingStrategy);
sendMessage("Hello, world.", writableStream);

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


Contribuidores