1.0.5 • Published 6 years ago

smart-promisify v1.0.5

Weekly downloads
62
License
MIT
Repository
github
Last release
6 years ago

smart-promisify

A smart implementation of promisify using native promises

Build Status Test Coverage

bitHound Code bitHound Overall Score bitHound Dependencies bitHound Dev Dependencies License: MIT

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)