Home

Awesome

Build Status

Nodeify

Convert promised code to use node style callbacks. If no callback is provided it will just return the original promise.

Installation

Server:

$ npm install nodeify

Usage

Functional

Call nodeify directly passing the promise and an optional callback as arguments. If a callback is provided it will be called as callback(error, result). If callback is not a function, promise is returned.

var nodeify = require('nodeify');

function myAsyncMethod(arg, callback) {
  return nodeify(myPromiseMethod(arg), callback);
}

Constructor / Method

The nodeify.Promise constructor returns a promise with a .nodeify method which behaves just like the functional version above except that the first argument is implicitly this.

var Promise = require('nodeify').Promise;

function myAsyncMethod(arg, callback) {
  return new Promise(function (resolver) {
    //do async work
  })
  .nodeify(callback);
}

Extend

Extend(promise)

Takes a promise and extends it to support the .nodeify method. It will still support the nodeify method after calls to .then.

var Promise = require('promise');
var nodeify = require('nodeify');

function myAsyncMethod(arg, callback) {
  return nodeify.extend(myPromiseMethod(arg))
    .nodeify(callback);
}

Extend(PromiseConstructor)

Takes a PromiseConstructor and extends it to support the .nodeify method.

var PromiseConstructor = require('promise-constructor-used-by-my-promise-method');

require('nodeify').extend(PromiseConstructor);

function myAsyncMethod(arg, callback) {
  return myPromiseMethod(arg).nodeify(callback);
}

Extend()

Extends the default promise constructor (returned by calling require('promise')) and extends it to support .nodeify.

require('nodeify').extend();

function myAsyncMethod(arg, callback) {
  //assuming myPromiseMethod uses `promise` as its promise library
  return myPromiseMethod(arg).nodeify(callback);
}

Licence

MIT

viewcount