Awesome
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