`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:</p><pre><code class="language-javascript"></code></pre><p></p><pre></pre><p><br></p><pre><code><span>// Node.js program to illustrate </span></code><br><code><span>// util.promisify() methods </span></code><br><br><code><span>// Since promisify function </span></code><br><code><span>// returns promise version </span></code><br><code><span>// of a function, it can also </span></code><br><code><span>// operate using async and await </span></code><br><br><code><span>// Importing Utilities module </span></code><br><code><span>const util = require('util')</span></code><br><br><code><span>// Importing File System module </span></code><br><code><span>const fs = require('fs')</span></code><br><br><code><span>// Use promisify to convert callback </span></code><br><code><span>// based method fs.readdir to </span></code><br><code><span>// promise based method </span></code><br><code><span>const readdir = util.promisify(fs.readdir)</span></code><br><br><code><span>const readFiles = async (path) => {</span></code><br><code><span> const files = await readdir(path)</span></code><br><code><span> console.log(files)</span></code><br><code><span>}</span></code><br><br><code><span>readFiles(process.cwd()).catch(err => {</span></code><br><code><span> console.log(err)</span></code><br><code><span>}) </span></code></pre><p dir="ltr"><br></p><p dir="ltr"><b><strong>Output:</strong></b></p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20200604121930/output-of-programme-to-illsutrate-promisify.png" width="1220" height="493"><p dir="ltr"><b><strong>Example 3: </strong></b><span>Below is the code example of the util.promisify() Method:</span></p><gfg-tabs data-run-ide="false" data-mode="light"><gfg-tab slot="tab">JavaScript</gfg-tab><gfg-panel slot="panel" data-code-lang="javascript"><pre><code class="language-javascript">// 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.