Javascript 错误:[$rootScope:inprog]$digest已在进行中-PromiseObjecs/For循环
本质上,我尝试在for循环中同时运行两个promise对象:Javascript 错误:[$rootScope:inprog]$digest已在进行中-PromiseObjecs/For循环,javascript,angularjs,Javascript,Angularjs,本质上,我尝试在for循环中同时运行两个promise对象: Error: [$rootScope:inprog] $digest already in progress 为什么会发生这个错误我为我的无知道歉,但我不明白我在哪里调用$digest 提前感谢您如果您在摘要周期已经运行时调用$scope.$apply,您将收到该错误。可以说,您是在Angular space中调用$apply,而不是在范围外调用第三方回调。在您省略的代码中,您是否调用$scope.$apply?不,您可以看到所有角
Error: [$rootScope:inprog] $digest already in progress
为什么会发生这个错误我为我的无知道歉,但我不明白我在哪里调用$digest
提前感谢您如果您在摘要周期已经运行时调用$scope.$apply,您将收到该错误。可以说,您是在Angular space中调用$apply,而不是在范围外调用第三方回调。在您省略的代码中,您是否调用$scope.$apply?不,您可以看到所有角度代码。代码的其余部分只是将一些变量相加-删除此代码并不能解决问题error@ste2425-有什么建议吗?恐怕没有。我个人没有遇到过这种情况。我要做的是排除一个AJAX调用,看看是否有冲突。另一件事则更具结构性。我尽量不让自己陷入那种境地。我执行一个AJAX调用来传递所有数据,并让服务器来处理,而不是使用少量数据来执行许多AJAX调用。另一方面,将$scope用作第一个参数是一个很好的做法。虽然Angular通过名字计算出来,但不会有太大区别。您是否希望在promiseObj中存储成功CB的结果?
angular.module('core').controller('HomeController', function($q, $http, $scope) {
for (var i = 0; i < window.config.Environments.length; i++) {
for (var j = 1; j < window.config.Clusters[i] + 1; j++) {
//Promise Object 1
promiseObj.physical[window.config.Environments[i] + "#Cluster" + j] = $http.get('url/search?idc=' + window.config.Environments[i] + '&type=Physical&cluster=' + j).success(function(i,j) {
return function(data) {
$scope.servers = data; // get data from json
angular.forEach($scope.servers, function(item) {
//some code
});
}
}(i,j));
//Promise Object 1
promiseObj.virtual[window.config.Environments[i] + "#Cluster" + j] = $http.get('url/search?idc=' + window.config.Environments[i] + '&type=Virtual&cluster=' + j).success(function(i,j) {
return function(data) {
angular.forEach($scope.virtualservers, function(item) {
//some code
});
}
}(i,j));
}
}
});