0
window.config = {
"Environments": [
    "LH5",
    "LH8",
    "AMS"
],
"Clusters": [
    4,
    4,
    4
]
};

Below is the promise object:

for (var i = 0; i < window.config.Environments.length; i++) {

    for (var j = 1; j < window.config.Clusters[i] + 1; j++) {

      promiseObj.physical[window.config.Environments[i] + "#Cluster" + j] = $http.get('http://url0/search?idc=' + window.config.Environments[i] + '&type=Physical&cluster=' + j).success(function(data) {


            $scope.servers = data; // get data from json

            countcores[window.config.Environments[i] + "#Cluster" + j] = 0;
            countmemory[window.config.Environments[i] + "#Cluster" + j] = 0;

            angular.forEach($scope.servers, function(item) {

                countcores[window.config.Environments[i] + "#Cluster" + j] = parseInt(countcores[window.config.Environments[i] + "#Cluster" + j]) + parseInt(item.cores);
                countmemory[window.config.Environments[i] + "#Cluster" + j] = parseInt(countmemory[window.config.Environments[i] + "#Cluster" + j]) + parseInt(item.memory);

            });


        });

           promiseObj.virtual[window.config.Environments[i] + "#Cluster" + j] = $http.get('http://url/search?idc=' + window.config.Environments[i] + '&type=Virtual&cluster=' + j).success(function(data) {


            $scope.servers = data; // get data from json

            countvirtualcores[window.config.Environments[i] + "#Cluster" + j] = 0;
            countvirtualmemory[window.config.Environments[i] + "#Cluster" + j] = 0;


            angular.forEach($scope.servers, function(item) {

                countvirtualcores[window.config.Environments[i] + "#Cluster" + j] = parseInt(countvirtualcores[window.config.Environments[i] + "#Cluster" + j]) + parseInt(item.cores);
                countvirtualmemory[window.config.Environments[i] + "#Cluster" + j] = parseInt(countvirtualmemory[window.config.Environments[i] + "#Cluster" + j]) + parseInt(item.memory);

            });


        });

}
}

What appears to be happenning is that the loop is going quicker than the promise object and j is reaching 5 before the promise object and what is logged is

["undefined#Cluster5"] = 1280

What I'm expecting is

["LH5#Cluster1"] = somevalue;
["LH5#Cluster2"] = somevalue;
["LH5#Cluster3"] = somevalue;
["LH5#Cluster4"] = somevalue;

["LH8#Cluster1"] = somevalue;
["LH8#Cluster2"] = somevalue;
["LH8#Cluster3"] = somevalue;
["LH8#Cluster4"] = somevalue;

["AMS#Cluster1"] = somevalue;
["AMS#Cluster2"] = somevalue;
["AMS#Cluster3"] = somevalue;
["AMS#Cluster4"] = somevalue;

I'm very confused to why it does not work as expected..

Update:

I have multiple promiseObjectives running in the same loops - how does this work?

Corbin
  • 414
  • 5
  • 19

0 Answers0