Angular chain promise

by nomadev

HTML

<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="http://code.angularjs.org/1.0.0/angular-1.0.0.js"></script>
<div ng-controller="Ctrl1">
 
</div>

JavaScript

var app = angular.module('myApp', []);
app.service('test', function($timeout, $q) {
  var self = this;

  this.getSomething = function() {
    return self.getData().then(function(data) {
      return self.compactData(data);
    });
  };

  this.getData = function() {
    var deferred = $q.defer();
    
      $timeout(function() {
          deferred.resolve("foo");
      }, 4000);

    return deferred.promise;
  };

  this.compactData = function(data) {
    var deferred = $q.defer();
    
    console.log(data);
      
    $timeout(function() {
        deferred.resolve("bar");
    }, 2000);

    return deferred.promise;
  };
});

function Ctrl1(test) {
    test.getSomething().then(function(data) {
        console.log(data);    
    }, function(err) {
        console.log("err: " + err);
    });
}