How to create a readable stream with an async data source in NodeJs? How to create a readable stream with an async data source in NodeJs? express express

How to create a readable stream with an async data source in NodeJs?


Be aware of the different modes of Stream: https://nodejs.org/api/stream.html#stream_two_modes

const Readable = require('stream').Readable;// starts in paused modeconst readable = new Readable();let i = 0;fetchMyAsyncData() {  setTimeout(() => {    // still remains in paused mode    readable.push(++i);    if (i === 5) {      return readable.emit('end');    }    fetchMyAsyncData();  }, 500);    }// "The res object is an enhanced version of Node’s own response object and supports all built-in fields and methods."app.get('/mystreamingresponse', (req, res) => {  // remains in paused mode  readable.on('readable', () => res.write(readable.read()));  fetchMyAsyncData();  // closes the response stream once all external data arrived  readable.on('end', () => res.end());})