Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including promisificator with all npm packages installed. Try it out:

var promisificator = require("promisificator")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

promisificator v4.1.1

Change a callback into a promise

promisificator

Returns a promise and a callback that will fulfill the promise.

Examples

1. Use the callback in an async function to resolve the promise

const fs = require("fs");
const promisificator = require("promisificator");

const {
  promise,
  callback,
} = promisificator({rejectOnError: true});

//`callback` can be passed to any async function that takes a callback
fs.readFile("/etc/password", callback);

//`promise` will be fulfilled once the callback is called
promise.then((data) => {
  console.log(data);
}, (err) => {
  throw err;
});

3. Allow a function to accept a callback or return a promise

const promisificator = require("promisificator");

function myFunc(arg, cb) {
  const {
    promise,
    callback,
  } = promisificator(cb);

  // `cb` will be wrapped in `process.nextTick` so it won't be
  // called immediately if it is a callback
  callback(null, arg);

  // if `cb` is a function `promise` will be undefined
  return promise;
}

myFunc("promise").then(console.log, console.error);

myFunc("callback", (err, result) => {
  if (err) {
    return console.error(err);
  }
  console.log(result);
});

4. Turn a callback function into a promise

const fs = require("fs");
const { promisify } = require("promisificator");

//`promisify(fs.readFile)` will return a function that returns a promise
promisify(fs.readFile, {callbackArg: -1})("/etc/password").then((data) => {
  console.log(data);
}, (err) => {
  throw err;
});

Options

rejectOnError

Default: true

Reject the promise if the first argument of the callback is truthy.

alwaysReturnArray

Default: false

Resolve the promise with an array of values if there is only one argument.

By default Promisificator will return an array only if there is more than one non-error argument sent to the callback.

callbackArg

Default: -1

The argument index to place the callback for promisify.

Negative values will be from the end of the function arguments.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free