Promises: Chaining
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(num) {
console.log(num)
return num * 2
})
.then(function(num) {
console.log(num) // = random number * 2
})
})
function getData($timeout, $q) {
return function() {
// simulated async function
return $q(function(resolve, reject) {
$timeout(function() {
resolve(Math.floor(Math.random() * 10))
}, 2000)
})
}
}