Chapter 8: Chaining promises and promise handlers

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

angular.module('myApp', [])
.controller('Ctrl', function ($q, $log) {
    var deferred1 = $q.defer()
      , promise1 = deferred1.promise
      , deferred2 = $q.defer()
      , promise2 = deferred2.promise;
    
    $q.all([promise1, promise2]).then($log.log, $log.error);
    
    // resolve a collection promise, no handler execution
    deferred1.resolve(456);
    deferred2.resolve(123);
    
    // reject a collection promise, rejection handler executes
    // (error) 123
});