我使用两个异步Web服务。我必须花时间添加每个响应中返回的对象。目标数据是相同的($ scope.time是一个全局变量)。我担心当time = time + X
有一段时间还是被粉碎。AngularJS服务和并发访问全局变量
$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 = A0.time + A1.time + B0.time + B1.time + B2.time ?
在java中,我使用同步方法做任何线程添加,但在JavaScript中,我不知道该怎么做。
实施例1:
(2)=> $ scope.time = $ scope.time + $ scope.elemAs [0]。时间; (2)
(4)=> $ scope.time = $ scope.time + $ scope.elemAs [1] .time; (2)
(6)=> $ scope.time = $ scope.time + $ scope.elemBs [0] .time; (2)
(8)=> $ scope.time = $ scope.time + $ scope.elemBs [1] .time; (2)
()=> $ scope.time = $ scope.time + $ scope.elemBs [2]。时间; (2)
实施例2:
(2)=> $ scope.time = $ scope.time + $ scope.elemAs [0]。时间; (2)
(4)=> $ scope.time = $ scope.time + $ scope.elemBs [0] .time; (2)
(6)=> $ scope.time = $ scope.time + $ scope.elemBs [1] .time; (2)
(8)=> $ scope.time = $ scope.time + $ scope.elemAs [1] .time; (2)
()=> $ scope.time = $ scope.time + $ scope.elemBs [2] .time; (2)
实施例3:
(2)=> $ scope.time = $ scope.time + $ scope.elemAs [0]。时间; (2)
(4)=> $ scope.time = $ scope.time + $ scope.elemBs [0] .time; (2)
(6)=> $ scope.time = $ scope.time + $ scope.elemBs [1] .time; (2)同时 $ scope.time = $ scope.time + $ scope.elemAs [1] .time; (2)
()=> $ scope.time = $ scope.time + $ scope.elemBs [2] .time; (2)
'$ scope.time'不是一个全局变量,它的属性'$ scope',但至于你的实际问题,我不能告诉你在问什么。你能否重新澄清你遇到的问题 –