Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 在我的angular js代码中,循环中的服务函数只有在完成所有迭代之后才执行_Javascript_Angularjs - Fatal编程技术网

Javascript 在我的angular js代码中,循环中的服务函数只有在完成所有迭代之后才执行

Javascript 在我的angular js代码中,循环中的服务函数只有在完成所有迭代之后才执行,javascript,angularjs,Javascript,Angularjs,控制器页 $scope.page = { '1' : "small", '2' : "large", '3': "medium" }; $scope.form.appraisal_id = "abc123"; $scope.form.user_id = "efg123"; for(var prop in $scope.page){ $scope.form.question_id =

控制器页

    $scope.page = {
        '1' : "small",
        '2' : "large",
        '3': "medium"
    };      
    $scope.form.appraisal_id = "abc123";
    $scope.form.user_id = "efg123";
    for(var prop in $scope.page){
        $scope.form.question_id = prop;
        $scope.form.answer = $scope.page[prop]
        console.log($scope.form);
        appraisalService.saveForm($scope.form,function(result){
          $scope.sent=result
          console.log($scope.sent)
          });



};
我的成绩

对象{评估id:“abc123”,用户id:“efg123”,问题id:“1”,回答:“小”}

对象{评估id:“abc123”,用户id:“efg123”,问题id:“2”,回答:“大”}

对象{评估id:“abc123”,用户id:“efg123”,问题id:“3”,回答:“中等”}

资源{u_v:0,评估id:“abc123”,用户id:“efg123”,问题id:3,回答:“中等”…}

资源{u_v:0,评估id:“abc123”,用户id:“efg123”,问题id:3,回答:“中等”…}

资源{u_v:0,评估id:“abc123”,用户id:“efg123”,问题id:3,回答:“中等”…}

期望输出

对象{评估id:“abc123”,用户id:“efg123”,问题id:“1”,回答:“小”}

对象{评估id:“abc123”,用户id:“efg123”,问题id:“2”,回答:“大”}

对象{评估id:“abc123”,用户id:“efg123”,问题id:“3”,回答:“中等”}

资源{u_v:0,评估id:“abc123”,用户id:“efg123”,问题id:1,回答:“小”…}

资源{u_v:0,评估id:“abc123”,用户id:“efg123”,问题id:2,回答:“大型”…}

资源{u_v:0,评估id:“abc123”,用户id:“efg123”,问题id:3,回答:“中等”…}


尝试使用
$q

var promises = [];

for(var prop in $scope.page) {
    $scope.form.question_id = prop;
    $scope.form.answer = $scope.page[prop]

    promises.push(appraisalService.saveForm($scope.form, function(result){
      return result;
    }));
}

$q.all(promises).then(function(result) {
  console.log(result);
});
您的
evaluationservice
调用是异步的,因此循环在第一个异步调用完成之前就完成了(因此它只捕获最后一个调用)

您可以将
evaluationservice
的每个承诺推送到一个数组中,然后使用
$q.all
等待所有承诺都解决后,再记录结果(或使用它执行任何操作)


如果您不熟悉
$q
,它会带有角度。只需注入它。

cuz异步代码。@KevinB,lol这是我所见过的最简洁、最完美的答案……你能提出一个解决方案来摆脱这些问题吗?它没有问题,没有什么需要修复的。它按预期工作。您在3控制台上看到的奇怪之处。资源的日志相同是由于控制台如何处理扩展对象。如果您从资源中记录问题id,则会得到3个不同的id。