promiseback

Accept an optional node-style callback, and also return a spec-compliant Promise!

MIT License

Downloads
497.7K
Stars
10
Committers
1

#promiseback

Accept an optional node-style callback, and also return a spec-compliant Promise!

API

var promiseback = require('promiseback');
var callback = function (err, value) {};

/* without a promise: */
promiseback(callback);
	/*
		- will throw if `callback` is not a function
		- returns a "deferred"
		- has resolve/reject methods, and `promise` property
		- will call `callback` as expected when deferred is resolved
	*/

/* with a promise: */
promiseback(promise, callback);
	/*
		- will throw if `callback` is truthy and not a function
		- `promise` will be converted to a Promise, so you can pass a value as well
		- returns a Promise
		- will call `callback` as expected when the promise is fulfilled
	*/

Examples

Using deferreds:

var promiseback = require('promiseback');

module.exports = function doSomethingCool(thing, callback) {
	// If callback is not provided, this code will simply return a normal promise.
	// If callback is provided but is not a function, promiseback will immediately throw a TypeError.

	// "deferred" is an object with `reject/resolve` methods, and a `promise` property.
	var deferred = promiseback(callback);
	if (thing) {
		deferred.resolve(thing);
	} else {
		deferred.reject(thing);
	}
	return deferred.promise;
};

Using a straight promise, when you can get it from somewhere else:

var promiseback = require('promiseback');

module.exports = function doSomethingCool(thing, callback) {
	// If callback is not provided, this code will simply return a normal promise.
	// If callback is provided but is not a function, promiseback will immediately throw a TypeError.

	var newThingPromise = makeNewThing(thing);
	return promiseback(newThingPromise, callback);
};

Tests

Simply clone the repo, npm install, and run npm test

Package Rankings
Top 4.81% on Npmjs.org