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(){
  ...