Promises: Simple

by JuanMa Garrido

HTML

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.5/angular.min.js"></script>
{{2+3}}

<!-- https://thinkster.io/a-better-way-to-learn-angularjs/promises -->

JavaScript

angular.module('app', [])
.factory('getData', getData)
.run(function(getData) {
   var promise = getData()
    .then(function(string) {
      console.log(string)
    }, function(error) {
      console.error(error)
    })
    .finally(function() {
      console.log('Finished at:', new Date())
    })
})

function getData($timeout, $q) {
  return function() {
    var defer = $q.defer()

    // simulated async function
    $timeout(function() {
      defer.resolve('data received!')
    }, 2000)

    return defer.promise
  }
}