angular-promises is a wrapper for Angular's $q.defer that allows for chaining, ala jQuery.Deferred(), as well as a similar promise interface, with the added benefit of performing a $scope.$apply on all promise callbacks, to keep them in the angular event loop.
npm install
npm test
- Requires PhantomJS
Install via bower:
bower install angular-promises
Or include dist/angular-promises.js in your project.
Methods (all but promise
return deferred instance):
resolve
- Resolve the Deferred object and call its handler
reject
- Reject the Deferred object and call its handler
notify
- Call the progress callback on a Deferred object
promise
- Return the Deferred promise object
Methods (all return promise instance):
done
- Add handler to be called when Deferred object is resolved
fail
- Add handler to be called when Deferred object is reject
always
- Add handler to be called when Deferred object is resolved or reject
progress
- Add handler to be called when Deferred object sends a notification
Note: like jQuery but unlike $q, more than one callback can be registered on done
, fail
and always
.
// Deferred object
var deferred = new Deferred();
// Promise
var someAsyncFunction = function() {
var deferred = new Deferred();
setTimeout(function(){
deferred.resolve();
}, 1000);
return deferred.promise();
};
var promise = someAsyncFunction();
promise.done(onDone).fail(onFail).always(thingIAlwaysDo);