3 min read
•Question 28 of 62mediumWhat 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');