GitHub - then/nodeify: Convert promised code to use node style callbacks
Convert promised code to use node style callbacks. If no callback is provided it will just return the original promise.
Installation
Server:
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
