Node.js stream.finished() Method
The stream.finished() method is utilized to receive an alert if a stream is not writable or readable anymore or if it had experienced an error or a close event that is immature.
Syntax:
stream.finished(stream, options, callback)
Parameters: This method accepts three parameters as mentioned above and described below:
- stream: This parameter can be readable or writable.
- options: This is an object, which can be:
- It can be an error i.e. if it is set to false, then a call to emit events(‘error’, err) is not considered as finished and by default it is true.
- It can be readable i.e. if it is set to false, then a callback function is called when the stream ends still the stream can be readable and by default it is true.
- It can be writable i.e. When set to false, then a callback function is called when the stream ends still the stream can be writable and by default it is true.
- callback: A callback function that takes an elective error argument.
Return Value: It returns a cleanup function that detaches all the registered listeners.
The below examples illustrate the use of the stream.finished() method in Node.js:
Example 1:
javascript
// Node.js program to demonstrate the // stream.finished(stream[, options], // callback) method // Including fs module const fs = require( 'fs' ); // Constructing finished from stream const { finished } = require( 'stream' ); // Constructing promisify from // util const { promisify } = require( 'util' ); // Defining finishedAsync method const finishedAsync = promisify(finished); // Constructing readable stream const readable = fs.createReadStream( "input.text" ); // Constructing writable stream let writable = fs.createWriteStream( "output.text" ); // Async function (async function run() { try { // Calling pipe method readable.pipe(writable); await finishedAsync(readable); console.log( "Readable is being consumed" ); } // Shows error catch (err) { console.error(err); } })(); |
Output:
Promise { <pending> } Readable is being consumed
Example 2:
javascript
// Node.js program to demonstrate the // stream.finished(stream[, options], // callback) method // Including fs module const fs = require( 'fs' ); // Constructing finished from stream const { finished } = require( 'stream' ); // Constructing promisify from // util const { promisify } = require( 'util' ); // Defining finishedAsync method const finishedAsync = promisify(finished); // Constructing readable stream const readable = fs.createReadStream( "input.text" ); // Constructing writable stream let writable = fs.createWriteStream( "output.text" ); // Async function (async function run() { try { // Calling pipe method readable.pipe(writable); await finishedAsync(readable); console.log( "Readable is being consumed" ); } // Shows error catch (err) { console.error(err); } })(); |
Output: Here, an error occurs while writing the file name so an error is returned in the output.
Promise { <pending> } { [Error: ENOENT: no such file or directory, open 'input.text'] errno: -2, code: 'ENOENT', syscall: 'open', path: 'input.text' }
Reference: https://nodejs.org/api/stream.html#stream_stream_finished_stream_options_callback
Contact Us