smart-promisify
v1.0.5
Published
A smart implementation of promisify using native promises
Downloads
1,242
Maintainers
Readme
smart-promisify
A smart implementation of promisify using native promises
Install
npm i smart-promisify
Features
With smart-promisify you can obviously wrap asynchronous functions so they return a promise.
But why smart?
The smart thing about this promisify module is, that you can use the wrapped function just like before. If you provide a callback, no promise will be returned. If you don't provide a callback, you will get your promise.
You can also change the this object of the wrapped function. If you use .apply, .call or .bind on the wrapper, the this object will also be applied to the wrapped function.
Example - Promisify fs.mkdir
const fs = require('fs')
const promisify = require('smart-promisify')
// create an async function so we can await stuff
async function example () {
// wrap the fs.mkdir method
let mkdir = promisify(fs.mkdir)
// await the promise returned by the wrapper
await mkdir('folder1')
// you can still provide a callback.
// the wrapper will return the return value of the fs.mkdir instead of a promise
mkdir('folder2', console.log)
// changing the this of the promisified function
mkdir.call(fs, 'folder3')
// fs.mkdir will now have fs as its this object
// alternatively you can call the promisify function with a second argument.
mkdir = promisify(fs.mkdir, fs)
// the second argument will be used as this object for the wrapped function, if it isn't changed afterwards by with call, bind or apply
}
example().catch(console.error)