Open In App

Node.js stream.finished() Method

Improve
Improve
Like Article
Like
Save
Share
Report

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



Last Updated : 30 Mar, 2023
Like Article
Save Article
Share your thoughts in the comments
Similar Reads