Node.js built-in module functions as Promises
Node.js provides asynchronous methods for fs
, dns
, stream
, and timers
modules that return Promises.
const {createWriteStream,promises: { readFile }} = require('fs');const dns = require('dns/promises');const stream = require('stream/promises');const timers = require('timers/promises');const sleep = timers.setTimeout;const SLEEP_TIMEOUT_MS = 2000;(async () => {const fileName = 'test-file';const writeStream = createWriteStream(fileName, {autoClose: true,flags: 'w'});await stream.pipeline('some text', writeStream);await sleep(SLEEP_TIMEOUT_MS);const readFileResult = await readFile(fileName);console.log(readFileResult.toString());const lookupResult = await dns.lookup('google.com');console.log(lookupResult);})();
Use the promisify
function to convert other callback-based functions to Promise-based.
const crypto = require('crypto');const { promisify } = require('util');const randomBytes = promisify(crypto.randomBytes);const RANDOM_BYTES_LENGTH = 20;(async () => {const randomBytesResult = await randomBytes(RANDOM_BYTES_LENGTH);console.log(randomBytesResult);})();