#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
3 min read
Question 28 of 62medium

What is util.promisify() in Node.js?

Converting callback-based functions to promises.

What You'll Learn

  • What promisify does
  • How to use it
  • Common use cases

What is promisify?

util.promisify() converts callback-based functions to Promise-based functions.

Example

code.jsJavaScript
const util = require('util');
const fs = require('fs');

// Callback style
fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// Promisified
const readFile = util.promisify(fs.readFile);

// Now use with async/await
async function read() {
  const data = await readFile('file.txt', 'utf8');
  console.log(data);
}

// Or with .then()
readFile('file.txt', 'utf8')
  .then(data => console.log(data))
  .catch(err => console.error(err));

Custom Promisify

code.jsJavaScript
function customPromisify(fn) {
  return function(...args) {
    return new Promise((resolve, reject) => {
      fn(...args, (err, result) => {
        if (err) reject(err);
        else resolve(result);
      });
    });
  };
}

Note

Modern Node.js has fs/promises:

code.jsJavaScript
const fs = require('fs/promises');
const data = await fs.readFile('file.txt', 'utf8');