Edit in JSFiddle

(function () {
    var app = angular.module("myApp", []);
    
    app.run(['$rootScope', '$q', '$timeout', 
             function ($rootScope, $q, $timeout) {
                 
                 var one = $q.defer();
                 var two = $q.defer();
                 var three = $q.defer();
                 
                 function success(data){
                     $rootScope.status = data;
                 }
                 
                 $q.all([one.promise, two.promise, three.promise]).then(function(data){
                     $timeout(function(){$rootScope.status = data;}, 1000);
                 });
                 
                 one.promise.then(success);
                 two.promise.then(success);
                 three.promise.then(success);
                 
                 
                 $timeout(function(){
                     one.resolve('one done');
                 }, 2000);
                 
                 $timeout(function(){
                     two.resolve('two done');
                 }, 3000);
                 
                 $timeout(function(){
                     three.resolve('three done');
                 }, 1000);                
    }]);
})();
<div ng-app="myApp">{{status}}</div>