angularjs promises and $q.defer()
HTML
<script src="http://code.angularjs.org/1.3.5/angular.js"></script>
<div ng-app="myApp">
<div ng-controller="Controller_1">
myName : {{myName}}
<br>
</div>
</div>
JavaScript
var myApp = angular.module('myApp', []);
myApp.controller('Controller_1', ['$scope', 'Service_1', function($scope, Service_1) {
var myName = "Paul";
var fastFunction = function(name){
console.log('Start of fastFunction:', name, Date.now());
alert('Hello ' + name + ' - you are quick!');
};
Service_1.slowService(myName).then(
(name) => {
alert('Hello ' + name + ' - you are quick!');
}, (error) => {
console.error(error.message);
});
$scope.myName = myName;
}]);
myApp.service('Service_1', function($q) {
this.slowService = function (name) {
var deferred = $q.defer();
console.log('Start of slowService:', name, Date.now());
setTimeout(function() {
console.log('setTimeout name:', name, Date.now());
if(name){
name = 'Hello, ' + name + " is learning Angularjs";
console.log('name:', name);
deferred.resolve(name);
debugger;
} else {
deferred.reject('No name supplied !');
}
}, 3000);
return deferred.promise;
};
});