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 accept three parameters as mentioned above and described below:

  • stream: This parameter can be readable or writable.
  • options: This is an object, which can be:
    1. 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.
    2. 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.
    3. 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 which takes an elective error argument.

Return Value: It returns a cleanup function which detaches all the registered listeners.

Below examples illustrate the use of stream.finished() method in Node.js:



Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// Node.js program to demonstrate the     
// stream.finished(stream[, options], 
// callback) method
  
// Including fs module
var 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
var 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);
  }
  })();

chevron_right


Output:

Promise { <pending>  }
Readable is being consumed

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// Node.js program to demonstrate the     
// stream.finished(stream[, options], 
// callback) method
  
// Including fs module
var 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("inpu.text");
  
// Constructing writable stream
var 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);
  }
  })();

chevron_right


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 'inpu.text'] 
errno: -2, code: 'ENOENT', syscall: 'open', path: 'inpu.text' }

Reference: https://nodejs.org/api/stream.html#stream_stream_finished_stream_options_callback




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : Akanksha_Rai