在嵌套循环中处理 AJAX (Angularjs)
Handling AJAX in nested loop (Angularjs)
var $scope.units = [1,2];
var $scope.shiftplans = ['plan1','plan2','plan3']
for(var i=0;i<$scope.units.length;i++){
for(var a=0;a<$scope.shiftplans.length;a++) {
console.log('i:'+i);
console.log('a:'+a);
}
}
指纹:
i:0 a:0 i:0 a:1 i:0 a:2 i:1 a:0 i:1 a:1 i:1 a:2
但:
var $scope.units = [1,2];
var $scope.shiftplans = ['plan1','plan2','plan3']
for(var i=0;i<$scope.units.length;i++){
for(var a=0;a<$scope.shiftplans.length;a++) {
***$http.get(function(){
console.log('i:'+i);
console.log('a:'+a);
});***
}
}
控制台登录上方 ajax 根据 ajax 响应以不同的值打印值。
如何处理 AJAX 完成并稍后移动到循环?
您需要
为每个 ajax 调用在 IIFE 上绑定 i
和 a
的值,因为 ajax 调用是异步的,与 for 循环不同
例:
for(var i=0;i<$scope.units.length;i++){
for(var a=0;a<$scope.shiftplans.length;a++) {
(function(_i, _a) {
***$http.get(function(){
console.log('i:'+_i);
console.log('a:'+_a);
});***
})(i, a);
}
}
由于是异步调用,因此无法处理何时接收回调 AngularJs: $http 同步调用
我能想到如何处理它的唯一方法是你制作一个对象数组,并映射响应以写入正确的键。收到所有响应后,它可以打印出数组。像这样:
var $scope.units = [1,2];
var $scope.shiftplans = ['plan1','plan2','plan3'];
var sizeOfResponses = $scope.units.length * $scope.shiftplans.length;
var countOfResponses = 0;
var responsesArray = [];
for(var i=0;i<$scope.units.length;i++){
for(var a=0;a<$scope.shiftplans.length;a++) {
var index = i * $scope.units.length + a;
responsesArray[index] = {i: null, a: null
$http.get(function(){
responsesArray[index].i = +i;
responsesArray[index].a = +a;
countOfResponses++;
if(countOfResponses === sizeOfResponses)console.log(responsesArray);
});
}
}
相关文章:
- AngularJS JQuery Ajax表单提交等效
- 在点击AngularJS时发出新的AJAX请求
- 从输入中获取字符串,并在AngularJS中发出AJAX请求
- Ruby On Rails应用程序与angularJS关于AJAX
- 如何使AngularJS控制器依赖于通过ajax加载在rootScope上的值
- AngularJS Ajax Call
- 从ASP MVC异步加载Angularjs(AJAX)并执行它们
- 使用 AngularJS/AJAX/JavaScript 调用 PHP
- 带有文件上传功能的 AngularJs Ajax POST 表单
- jQuery ajax 请求有效,相同的 AngularJS ajax 请求无效
- AngularJS $.ajax issue
- 当我执行循环时,AngularJs/Ajax索引正在改变
- AngularJS: ajax调用后模板中的作用域没有更新
- 我可以改进这个AngularJS / AJAX javascript片段
- 如何运行angularjs ajax请求在循环,但有延迟
- AngularJS ajax http promise返回额外的数据
- angularJS AJAX请求默认超时
- jQuery或AngularJS Ajax“POST”请求使用下面的代码向服务器发送,但不向服务器发送参数数据
- Angularjs ajax return not consistent
- Angularjs Ajax 获取发送标头