This is JavaScript program demonstrates how to write to and read from a stream.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>XoaX.net's Javascript</title> <!-- Supply a transparent 1x1 favicon --> <link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="> <script type="text/javascript" src="WriteReadStream.js"></script> </head> <body onload="Initialize()"> </body> </html>
async function Initialize() {
// NOTE: THIS REQUIRES A WEB SERVER TO RUN
let qBodyElement = document.body;
let qPreInElement = document.createElement("pre");
qPreInElement.style.color = "red";
qBodyElement.appendChild(qPreInElement);
let qPreOutElement = document.createElement("pre");
qPreOutElement.style.color = "green";
qBodyElement.appendChild(qPreOutElement);
let iCharCount = 0;
const dqStream = new ReadableStream({
start(qController) {
let iIntervalID = setInterval(() => {
let cNextChar = GetRandomChar();
qController.enqueue(cNextChar);
qPreInElement.innerHTML += cNextChar;
++iCharCount;
if (iCharCount % 100 == 0) {
qPreInElement.innerHTML += "\n";
}
// End the write and read the stream.
if (iCharCount == 400) {
ReadStream(dqStream, qPreOutElement);
clearInterval(iIntervalID);
}
}, 10);
}, pull(qController) { // Not used
}, cancel() {
clearInterval(iIntervalID);
}
})
}
function GetRandomChar() {
let caChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()";
return caChars.charAt(Math.floor(Math.random() * caChars.length));
}
function ReadStream(qStream, qPreOutElement) {
const kqReader = qStream.getReader();
let iCharsReceived = 0;
kqReader.read()
.then(function Process({ done, value }) {
if (done) {
console.log("Complete");
return;
}
iCharsReceived += value.length;
qPreOutElement.innerHTML += value;
if (iCharsReceived % 100 == 0) {
qPreOutElement.innerHTML += "\n";
}
return kqReader.read().then(Process);
});
}
© 20072026 XoaX.net LLC. All rights reserved.