Javascript AngularJS服务和对全局变量的并发访问
我使用两个异步web服务。我必须花时间添加响应中返回的每个对象。目标数据相同($scope.time是一个全局变量)。我担心当Javascript AngularJS服务和对全局变量的并发访问,javascript,angularjs,global-variables,Javascript,Angularjs,Global Variables,我使用两个异步web服务。我必须花时间添加响应中返回的每个对象。目标数据相同($scope.time是一个全局变量)。我担心当time=time+X某个时间或被压碎时 $scope.time = 0; $scope.elemAs = []; $scope.loadElemA = function(nb) { ElemAService.query({nb: nb}, function(result) { $scope.elemAs = result; fo
time=time+X
某个时间或被压碎时
$scope.time = 0;
$scope.elemAs = [];
$scope.loadElemA = function(nb) {
ElemAService.query({nb: nb}, function(result) {
$scope.elemAs = result;
for (var index = 0; index < $scope.elemAs.length; index++) {
$scope.time = $scope.time + $scope.elemAs[index].time;
}
});
};
$scope.loadElemA(2);
$scope.elemBs = [];
$scope.loadElemB = function(nb) {
ElemBService.query({nb: nb}, function(result) {
$scope.elemBs = result;
for (var index = 0; index < $scope.elemBs.length; index++) {
$scope.time = $scope.time + $scope.elemBs[index].time;
}
});
};
$scope.loadElemB(3);
console.log($scope.time);
$scope.time=0;
$scope.elemAs=[];
$scope.loadElemA=函数(nb){
查询({nb:nb},函数(结果){
$scope.elemAs=结果;
对于(var index=0;index<$scope.elemAs.length;index++){
$scope.time=$scope.time+$scope.elemAs[index].time;
}
});
};
$scope.loadElemA(2);
$scope.elemBs=[];
$scope.loadElemB=函数(nb){
查询({nb:nb},函数(结果){
$scope.elemBs=结果;
对于(var index=0;index<$scope.elemBs.length;index++){
$scope.time=$scope.time+$scope.elemBs[index].time;
}
});
};
$scope.loadElemB(3);
log($scope.time);
在我的结果中,我不确定是否获得$scope.time=A0.time+A1.time+B0.time+B1.time+B2.time?
在java中,我使用一种同步方法来添加任何线程,但在javascript中,我不知道如何做
示例1:
(2) =>$scope.time=$scope.time+$scope.elemAs[0]。时间;(二)
(4) =>$scope.time=$scope.time+$scope.elemAs[1]。时间;(二)
(6) =>$scope.time=$scope.time+$scope.elemBs[0]。时间;(二)
(8) =>$scope.time=$scope.time+$scope.elemBs[1]。时间;(二)
(10)=>$scope.time=$scope.time+$scope.elemBs[2]。时间;(二)
示例2:
(2) =>$scope.time=$scope.time+$scope.elemAs[0]。时间;(二)
(4) =>$scope.time=$scope.time+$scope.elemBs[0]。时间;(二)
(6) =>$scope.time=$scope.time+$scope.elemBs[1]。时间;(二)
(8) =>$scope.time=$scope.time+$scope.elemAs[1]。时间;(二)
(10)=>$scope.time=$scope.time+$scope.elemBs[2]。时间;(二)
示例3:
(2) =>$scope.time=$scope.time+$scope.elemAs[0]。时间;(二)
(4) =>$scope.time=$scope.time+$scope.elemBs[0]。时间;(二)
(6) =>$scope.time=$scope.time+$scope.elemBs[1]。时间;(2) 同一时间$scope.time=$scope.time+$scope.elemAs[1]。时间;(二)
(8)=>$scope.time=$scope.time+$scope.elemBs[2]。时间;(2) 我的问题有答案。我在每次回调中都有一个大循环javascript对于所有回调只有一个线程。
$scope.time = 0;
$scope.elemAs = [];
$scope.loadElemA = function(nb) {
ElemAService.query({nb: nb}, function(result) {
$scope.elemAs = result;
for (var index = 0; index < $scope.elemAs.length; index++) {
$scope.time = $scope.time + $scope.elemAs[index].time;
for(var kk = 0; kk < 10000; kk++){
console.log("A");
}
}
});
};
$scope.loadElemA(2);
$scope.elemBs = [];
$scope.loadElemB = function(nb) {
ElemBService.query({nb: nb}, function(result) {
$scope.elemBs = result;
for (var index = 0; index < $scope.elemBs.length; index++) {
$scope.time = $scope.time + $scope.elemBs[index].time;
for(var kk = 0; kk < 10000; kk++){
console.log("B");
}
}
});
};
$scope.loadElemB(3);
console.log($scope.time);
$scope.time=0;
$scope.elemAs=[];
$scope.loadElemA=函数(nb){
查询({nb:nb},函数(结果){
$scope.elemAs=结果;
对于(var index=0;index<$scope.elemAs.length;index++){
$scope.time=$scope.time+$scope.elemAs[index].time;
对于(var kk=0;kk<10000;kk++){
控制台日志(“A”);
}
}
});
};
$scope.loadElemA(2);
$scope.elemBs=[];
$scope.loadElemB=函数(nb){
查询({nb:nb},函数(结果){
$scope.elemBs=结果;
对于(var index=0;index<$scope.elemBs.length;index++){
$scope.time=$scope.time+$scope.elemBs[index].time;
对于(var kk=0;kk<10000;kk++){
控制台日志(“B”);
}
}
});
};
$scope.loadElemB(3);
log($scope.time);
通过这个测试,我看到我有10.000 A和10.000 B或10.000 B和10.000 A。我从来没有混合过A和B(AAABAABBA…)
我的代码很好,在回调中添加代码没有问题。时间不是全局变量,它是
$scope
的一个属性,但对于您的实际问题,我无法说出您的要求。你能重新编辑以澄清你有什么问题吗