AngularJS Services 2

AngularJS 1.2.6 Services

HTML

<script src="http://code.angularjs.org/1.2.6/angular.js"></script>
<script src="http://code.angularjs.org/1.2.6/angular-resource.js"></script>
<div class="container" ng-controller="MyCtrl">
    <div class="myname">Hello, {{name}}!</div>
    <div class="mytime">The time is {{time}}.</div>
    <div class="myvalue">The Value: {{theValue}}</div>
</div>

CSS

body {
    font-family: Verdana;
}

body .container {
    margin-top: 1em;
    margin-left: 1em;
}

body .container .myname {
    font-weight: bold;
    font-size: large;
}

body .container .mytime {
}

body .container .myvalue {
}

JavaScript

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

angular.module('myApp').service('TimeService', function($q, $resource, OtherService) {
    var getResult = function() {
        var fullResult = $q.defer();
        $resource('http://time.jsontest.com/').get().$promise.then(function(data) {
            var promisses = [];
            for (var i = 0; i < 2; i++) {
                var ires = $q.defer();
                promisses.push(ires);
                OtherService.get({val: data.milliseconds_since_epoch+i}).$promise.then(function(keyValue) {
                    //console.log(keyValue);
                    data['key'+keyValue.key] = keyValue.key;
                    ires.resolve(keyValue);
                });
            }
            $q.all(promisses).then(function() {
                fullResult.resolve(data);
            });
        });
        return fullResult.promise;
    };
    return {
        getResult: getResult
    };
});

angular.module('myApp').service('OtherService', function($resource) {
    return $resource('http://echo.jsontest.com/key/:val', {val: '@val'});
});

angular.module('myApp').controller('MyCtrl', function($scope, TimeService, OtherService) {
    $scope.name = 'Mars';
    TimeService.getResult().then(function(data) {
        $scope.time = data.date;
        $scope.theValue = data;
    });
});