AngularJS $q Basic example
by Rishi Kumar
HTML
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.js"></script>
<div ng-app>
<h2>$q test</h2>
<div ng-controller="promiseCtrl">'
<button ng-click="exec1()">Execute sample 1</button>
<button ng-click="exec3()">Execute sample 2</button>
<button ng-click="exec5('Kumar')">With Reject and Notify</button>
<button ng-click="exec7()">Parallel Call</button>
</div>
</div>
JavaScript
function promiseCtrl($scope, $q, $timeout) {
$scope.exec1 = function(){
console.log("In Exec1")
var promise = $scope.exec2();
promise.then(function(){
console.log("Exec1 completed");
})
}
$scope.exec2 = function(){
console.log("In Exec2")
var deffered = $q.defer();
$timeout(function(){
deffered.resolve();
console.log("Exec2 completed");
},5000)
return deffered.promise;
}
$scope.exec3 = function(){
console.log("In Exec3")
var promise = $scope.exec4();
promise.then(function(){
console.log("Exec3 completed")
})
}
$scope.exec4 = function(){
console.log("Inside Exec4")
var promise = $timeout(function(){
console.log("Exec4 completed");
},5000)
return promise;
}
$scope.exec5 = function(name){
console.log("Inside Exec5");
var promise = $scope.exec6(name);
promise.then(function(res){
console.log(res);
},
function(res){
console.log(res);
},
function(res){
console.log(res);
})
}
$scope.exec6 = function(name){
var deffered = $q.defer();
$timeout(function(){deffered.notify("Hi "+name+". Please wait.")},100);
$timeout(function(){
if(name == 'rishi'){
deffered.resolve("Hello " + name +". You are welcome.");
}else{
deffered.reject("Sorry " + name + ". You cannot enter")
}
},3000)
return deffered.promise
}
$scope.exec7 = function(){
var deffered1 = function(){
console.log("func1");
var def1 = $q.defer()
$timeout(function(){
def1.resolve("deffered1 resolved");
},1000)
return def1.promise
};
var deffered2 = function(){
console.log("func2");
var def2 = $q.defer()
$timeout(function(){
def2.resolve("deffered2 resolved");
},2000)
return def2.promise
};
var deffered3 = function(){
...