Open In App

Node util.promisify() Method

`util.promisify()` in Node.js converts callback-based methods to promise-based, aiding in managing asynchronous code more cleanly. This alleviates callback nesting issues, enhancing code readability, and simplifying asynchronous operations through promise chaining.

Syntax:



util.promisify(func)

Parameters: This method accepts a single parameter function that holds the callback based function.

Return Value: This method returns a promise-based function.



Example 1: Below is the code example of the util.promisify() Method:




// Node.js program to illustrate
// util.promisify() methods
 
// Importing Utilities module
const util = require('util')
 
// Importing File System module
const fs = require('fs')
 
// Use promisify to convert callback
// based method fs.readdir to
// promise based method
const readdir =
    util.promisify(fs.readdir)
 
readdir('process.cwd()')
    .then(files => {
        console.log(files)
    })
    .catch(err => {
        console.log(err)
    })

Output:

[Error: ENOENT: no such file or directory, 
scandir 'C:\Users\bhudk\Desktop\nodec\process.cwd()'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'scandir',
  path: 'C:\\Users\\bhudk\\Desktop\\nodec\\process.cwd()'
}

Example 2: Below is the code example of the util.promisify() Method:




// Node.js program to illustrate
// util.promisify() methods
 
// Since promisify function
// returns promise version
// of a function, it can also
// operate using async and await
 
// Importing Utilities module
const util = require('util')
 
// Importing File System module
const fs = require('fs')
 
// Use promisify to convert callback
// based method fs.readdir to
// promise based method
const readdir = util.promisify(fs.readdir)
 
const readFiles = async (path) => {
    const files = await readdir(path)
    console.log(files)
}
 
readFiles(process.cwd()).catch(err => {
    console.log(err)
})

Output:

Example 3: Below is the code example of the util.promisify() Method:




// Node.js program to illustrate
// util.promisify() methods
 
// Importing Utilities module
const util = require('util')
 
// importing File System module
const fs = require('fs')
 
// Use promisify to convert
// callback based methods to
// promise based methods
const readdir = util.promisify(fs.readdir)
const lstat = util.promisify(fs.lstat)
 
 
const readFiles = async (path) => {
    const files = await readdir(path)
    for (let file of files) {
        const stats = await lstat(file)
        if (stats.isFile()) {
            console.log(`${file} -----> File`)
        } else {
            console.log(`${file} -----> Folder`)
        }
    }
}
 
readFiles('process.cwd()').catch(err => {
    console.log(err)
})

Output:

We have a Cheat Sheet on Node utility methods where we covered all the utility methods to check those please go through Node.js Utility Complete Reference article.


Article Tags :