Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS服务和对全局变量的并发访问_Javascript_Angularjs_Global Variables - Fatal编程技术网

Javascript AngularJS服务和对全局变量的并发访问

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

我使用两个异步web服务。我必须花时间添加响应中返回的每个对象。目标数据相同($scope.time是一个全局变量)。我担心当
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
的一个属性,但对于您的实际问题,我无法说出您的要求。你能重新编辑以澄清你有什么问题吗