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
