Is There A Second Success In Angular $q.all() As In Jquery $.get()
Solution 1:
Why couldn't you do that :
$q.all([
        $http.get(ROOT + "Lookup/GetStates"),
        $http.get(ROOT + "Lookup/GetCountries"),
        $http.get(ROOT + "Address/GetAddresses"),
    ]).then(function (results) {
        $scope.states = jQuery.parseJSON(results[0].data.data);
        $scope.country = jQuery.parseJSON(results[1].data.data);
        $scope.addresses = jQuery.parseJSON(results[2].data);
        $scope.setupControls();
    });
I think there is no need for a second success. Keep It Simple (and Sexy?)
Solution 2:
Have a look at this:
.finally(function() {
  // do this on both error and success
});
As it says, executes after success and error
So Full code:
$q.all([
        $http.get(ROOT + "Lookup/GetStates"),
        $http.get(ROOT + "Lookup/GetCountries"),
        $http.get(ROOT + "Address/GetAddresses"),
    ]).then(function (results) {
        $scope.states = jQuery.parseJSON(results[0].data.data);
        $scope.country = jQuery.parseJSON(results[1].data.data);
        $scope.addresses = jQuery.parseJSON(results[3].data);
    }).finally(function() { /* <-- here */// do this on both error and success
    });
Solution 3:
Angular's $q provide the same methods as jQuery's. Details here.
One approach I could think of is the following:
$http.get('parent request')
.then(function(win){
      // do something when everything is resolved
   },
   function(err){
      //handle error
   },
   function(progress){
      //do something when a child request is resolved
   }
);
... where the "parent request" makes some child requests & for each child resolved request you can use .notfiy() method to update the parent request & also you should keep track of all your child request status and when all are resolved you can call .resolve() and do whatever you want ($scope.setupControls() in your case).
Solution 4:
You should be able to invoke then multiple times.
https://docs.angularjs.org/api/ng/service/$q
Chaining promises Because calling the then method of a promise returns a new derived promise, it is easily possible to create a chain of promises:
promiseB = promiseA.then(function(result) {
   return result + 1;
});
// promiseB will be resolved immediately after promiseA is resolved and its value// will be the result of promiseA incremented by 1$q.all([
        $http.get(ROOT + "Lookup/GetStates"),
        $http.get(ROOT + "Lookup/GetCountries"),
        $http.get(ROOT + "Address/GetAddresses"),
    ]).then(function (results) {
        $scope.states = jQuery.parseJSON(results[0].data.data);
        $scope.country = jQuery.parseJSON(results[1].data.data);
        $scope.addresses = jQuery.parseJSON(results[3].data);
    }).then(function (result) {
         //do something here
    }) ;
Post a Comment for "Is There A Second Success In Angular $q.all() As In Jquery $.get()"