Chapter 8: Chaining promises and promise handlers

by billy roberts

HTML

<script src="https://code.angularjs.org/1.3.2/angular.min.js"></script>
<div ng-app="myApp">
    <div ng-controller="Ctrl"></div>
</div>

JavaScript

//return an error within a chain
angular.module('myApp', [])
.controller('Ctrl', function ($q, $log) {
    var deferred = $q.defer()
      , promise = deferred.promise;
    
    promise
    .then(function () {
        // initial promise resolved handler instructs handlers
        // child promise(s) to be rejected
        return $q.reject(123);
    })
    .then(
        // child promise resolved handler
        function(data) {
            $log.log("resolved", data);
        },
        // child promise rejected handler
        function(data) {
            $log.log("rejected", data);
        }
    );
    
    deferred.resolve();
    // "rejected", 123
});