Skip to content
Related Articles

Related Articles

Improve Article
Node.js | stream.finished() Method
  • Last Updated : 01 Jul, 2020

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:




// 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);
  }
  })();

Output:

Promise { <pending>  }
Readable is being consumed

Example 2:




// 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);
  }
  })();

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
Recommended Articles
Page :