AngularJS Promises - $q.all()

by danielzen

HTML

<div ng-controller="MyCtrl">
  Promise 1: {{value1}}<br>
  Promise 2: {{value2}}<br>
  All done: {{bothValues}}
</div>

JavaScript

var myApp = angular.module('myApp', []);

function MyCtrl($scope, $q, $timeout) {
    var    
    q2 = $scope.q2 = $q.defer(),
    p1 = $q.when(1), 
    p2 = $scope.q2.promise;
       
    $q.all([
        p1.then(function(value) { return $scope.value1 = value; }), 
        p2.then(function(value) { return $scope.value2 = value; })
    ])
    .then(function(values) {        
        $scope.bothValues = values;
    });
    
    $timeout(function() { q2.resolve(2) }, 3000);
}