The ready
read-only property of the WritableStreamDefaultWriter
interface returns a Promise
that resolves when the desired size of the stream's internal queue transitions from non-positive to positive, signaling that it is no longer applying backpressure.
The following example shows two uses of the ready
property. The first uses ready
to ensure that the WritableStream
is done writing and thus able to receive data before sending a binary chunk. The second also checks whether the WritableStream
is done writing, but this time because the writing must be finished before the writer can be closed.
function sendMessage(message, writableStream) {
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.error(`Chunk error: ${err}`);
});
defaultWriter.ready
.then(() => defaultWriter.close())
.then(() => {
console.log("All chunks written");
})
.catch((err) => {
console.error(`Stream error: ${err}`);
});
});
}