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:
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 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:
Javascript
// 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:
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.