@withjoy/promisify

1.1.2 • Public • Published

promisify

Available as an npm dependency at "@withjoy/promisify"

This helper is designed to ease the transition from callbacks to promises.

Similar to the Bluebird promisify this helper takes a function whose lasts argument is a callback and converts it to a function that returns a promise. There is one important difference though: if a callback is passed to the new function it will perform as it once did maintaining backwards compatibility.

Wrap every old function you touch with promisify. There is no need to worry about where else it is used in the code because backwards compatibility is maintained.

Context is maintained as well so it is perfectly valid to wrap a function on an object with promisify e.g.

// Safe :) context is maintained properly
Test.prototype.getValue = promisify(function(callback) {
  callback(null, this.value);
});

See test/test.js for all the supported cases. If you think of another then please comment or even better make a pr :)

promisify.inverse

Promisify.inverse is for making a new function (that returns a promise) backwards compatible.

It can be confusing and disruptive to add a function that returns a promise amongst dozens of other functions that take callbacks but we have to do it to move forward. (e.g. adding one function that takes a promise in the eventsmanager) Wrapping your new function in promisify.inverse gives you the best of both worlds. If someone accidentally passes a callback with your function it will still work.

Readme

Keywords

none

Package Sidebar

Install

npm i @withjoy/promisify

Weekly Downloads

28

Version

1.1.2

License

ISC

Last publish

Collaborators

  • rahulcwithjoy
  • onurd
  • ebriscoe-joy
  • nikolayjoy
  • dfjoy
  • nilesh-joy
  • gfarannawithjoy
  • justinatjoy
  • mcendrju
  • roybot
  • marinda.martin
  • christian.motta
  • katiemgray
  • d2201
  • nekoro
  • johndennismpls
  • joylife
  • knkher
  • mcorrigan89
  • ktranada
  • cantremember
  • evanbreitsch
  • amy_withjoy
  • madjos
  • kaiyuewang1998