Usage in Deno
import { promisify } from "node:util";
promisify<TCustom extends Function>(fn: CustomPromisify<TCustom>): TCustom
Takes a function following the common error-first callback style, i.e. taking
an (err, value) => ...
callback as the last argument, and returns a version
that returns promises.
const util = require('node:util'); const fs = require('node:fs'); const stat = util.promisify(fs.stat); stat('.').then((stats) => { // Do something with `stats` }).catch((error) => { // Handle the error. });
Or, equivalently using async function
s:
const util = require('node:util'); const fs = require('node:fs'); const stat = util.promisify(fs.stat); async function callStat() { const stats = await stat('.'); console.log(`This directory is owned by ${stats.uid}`); } callStat();
If there is an original[util.promisify.custom]
property present, promisify
will return its value, see Custom promisified functions
.
promisify()
assumes that original
is a function taking a callback as its
final argument in all cases. If original
is not a function, promisify()
will throw an error. If original
is a function but its last argument is not
an error-first callback, it will still be passed an error-first
callback as its last argument.
Using promisify()
on class methods or other methods that use this
may not
work as expected unless handled specially:
const util = require('node:util'); class Foo { constructor() { this.a = 42; } bar(callback) { callback(null, this.a); } } const foo = new Foo(); const naiveBar = util.promisify(foo.bar); // TypeError: Cannot read property 'a' of undefined // naiveBar().then(a => console.log(a)); naiveBar.call(foo).then((a) => console.log(a)); // '42' const bindBar = naiveBar.bind(foo); bindBar().then((a) => console.log(a)); // '42'
fn: CustomPromisify<TCustom>
promisify<TResult>(fn: (callback: (err: any,result: TResult,) => void) => void): () => Promise<TResult>
promisify<T1,TResult,>(fn: (arg1: T1,callback: (err: any,result: TResult,) => void,) => void): (arg1: T1) => Promise<TResult>
promisify<T1,T2,TResult,>(fn: (arg1: T1,arg2: T2,callback: (err: any,result: TResult,) => void,) => void): (arg1: T1,arg2: T2,) => Promise<TResult>
promisify<T1,T2,>(fn: (arg1: T1,arg2: T2,callback: (err?: any) => void,) => void): (arg1: T1,arg2: T2,) => Promise<void>
promisify<T1,T2,T3,TResult,>(fn: (arg1: T1,arg2: T2,arg3: T3,callback: (err: any,result: TResult,) => void,) => void): (arg1: T1,arg2: T2,arg3: T3,) => Promise<TResult>
promisify<T1,T2,T3,>(fn: (arg1: T1,arg2: T2,arg3: T3,callback: (err?: any) => void,) => void): (arg1: T1,arg2: T2,arg3: T3,) => Promise<void>
promisify<T1,T2,T3,T4,TResult,>(fn: (arg1: T1,arg2: T2,arg3: T3,arg4: T4,callback: (err: any,result: TResult,) => void,) => void): (arg1: T1,arg2: T2,arg3: T3,arg4: T4,) => Promise<TResult>
promisify<T1,T2,T3,T4,>(fn: (arg1: T1,arg2: T2,arg3: T3,arg4: T4,callback: (err?: any) => void,) => void): (arg1: T1,arg2: T2,arg3: T3,arg4: T4,) => Promise<void>
promisify<T1,T2,T3,T4,T5,TResult,>(fn: (arg1: T1,arg2: T2,arg3: T3,arg4: T4,arg5: T5,callback: (err: any,result: TResult,) => void,) => void): (arg1: T1,arg2: T2,arg3: T3,arg4: T4,arg5: T5,) => Promise<TResult>