Chapter 8: Understanding and implementing a basic promise

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 deferred = $q.defer()
      , promise = deferred.promise; 
    
    // define handlers on the promise to gain visibility 
    // into their execution
    promise.then(function resolved() {
        $log.log('success');
    }, function rejected() {
        $log.log('rejected');
    });
    
    // verify initial state
    $log.log('a '+promise.$$state.status); // 0
    
    // resolve the promise
    deferred.resolve();               
    // >> "resolved"
    
    $log.log('b '+promise.$$state.status); // 1
    // output and state check verify state transition
    
    // attempt to reject the already resolved promise
    deferred.reject();
    
    $log.log('c '+promise.$$state.status); // 1
    // output and state check verify no state transition
});