



var avoidCallbackHell = $q.deferred.promisevar chainingPromises = $q.deferred.promisevar createYourOwnPromises = $q.deferred.promise$q.all([avoidCallbackHell, chainingPromises, createYourOwnPromise]).done(function() {// celebrate})
var orderCompleted = false;
placeOrder(order, function(result) {
orderCompleted = result.success;
alert('I got my order!', result);
});
//do some other things while we are placing an order
doingSomethingElse();var orderCompleted = false;placeOrder(order, function(result) { orderCompleted = result.success; });//NOO!!!!! orderCompleted is not guaranteed that the order was completed!!shipOrder(order, orderCompleted);
placeOrder(order, function(results) {//Insert the function to ship the order in the callback...shipOrder(order, results.completed);});
placeOrder(order, function(result) {
authorizeCC(creditCard, function(validCC) {
validateShippingAddr(address, function(validAddress) {
shipProduct(order, function(result) {
//order shipped!! right???
//result.success?? validCC???
});
});
});
});
var creditCardValidated = placeOrder(order).then(authorizeCC);var shippingValidated = creditCardValidated.then(validateShipping)Q.all([creditCardValidated, shippingValidated]).done(shipProduct)
Reference: http://christianlilley.wordpress.com/2013/09/19/promises-promises-mastering-async-io-in-javascript-with-the-promise-pattern/
var promise = Q.all([promise1, promise2]).then(finalPromise)//Using the promisefuncThatReturnsAPromise().then(function(success) {console.log(success);}, function(error) {console.log(error)};
//Creating the promisevar promise = function() {var deferred = $q.defer();if (fail)deferred.reject('oh no!!!');elsedeferred.resolve('happy!');return deferred.promise;}
var ccPromise = CreditCardService.validateCC(cc).then(function(result) {//resolvedconsole.log('You have a valid credit card', result);},function(error) {//rejectionconsole.log('Dude, something is not right with your card', error);},function(msg) {//notify callbackconsole.log('I have been notified', msg);});
var shippingPromise = CreditCardService.validateCC(cc).then(validateShipping).then(calculateTotalPrice).then(shipOrder)
It just makes sense!
promise.then(null, rejectionCallback)var deferred = $q.defer(); // promise created internall
You return the promise, and fulfill it later.
return deferred.promise;deferred.resolve('successful callback!');
deferred.reject('go home fool, you just got rejected!');
deferred.notify('I just got an alert!');
var doSomethingAsync = function() {var deferred = $q.defer();$timeout(function() {deferred.resolve('Done after 500 milliseconds');}, 500);return deferred.promise;}doSomethingAsync().then(function(resp) {//the message appears after ~500 millisecondsconsole.log(resp);});


$q.defer().promise.resolve(nextSpeaker())