Skip to main content
Stack Overflow
  1. About
  2. For Teams

Return to Question

replaced http://stackoverflow.com/ with https://stackoverflow.com/
Source Link
URL Rewriter Bot
URL Rewriter Bot

I have multiple promiseObjectives running in the same loop(s) - how does this work? I am aware of JavaScript closure inside loops – simple practical example JavaScript closure inside loops – simple practical example - However this does not help me, I require further assistance.

I have multiple promiseObjectives running in the same loop(s) - how does this work? I am aware of JavaScript closure inside loops – simple practical example - However this does not help me, I require further assistance.

I have multiple promiseObjectives running in the same loop(s) - how does this work? I am aware of JavaScript closure inside loops – simple practical example - However this does not help me, I require further assistance.

deleted 8 characters in body; edited title
Source Link
j08691
  • 208.5k
  • 33
  • 269
  • 281

Javascript Closure inside loops `

Thanks

Javascript Closure inside loops `

Thanks

Javascript Closure inside loops

Source Link
Corbin
  • 406
  • 5
  • 19

Javascript Closure inside loops `

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 have multiple promiseObjectives running in the same loop(s) - how does this work? I am aware of JavaScript closure inside loops – simple practical example - However this does not help me, I require further assistance.

Thanks

lang-js

AltStyle によって変換されたページ (->オリジナル) /