数组的长度不稳定

时间:2017-05-19 13:17:18

标签: angularjs node.js

所以我有一个控制器,我调用一个服务,从数据库中获取项目,我将这些项目存储在一个数组中,然后我在另一个函数中使用此数组,只有当我这样做时,数组的长度会发生变化,所以我的循环每次都开始时我仍然对回调的行为感到困惑,我认为这就是这个问题背后的原因,这是我的代码:

我的服务:

//get a task by id 
            getTachebyId : function(id_Data){
                 return $http.get('/api/taches/' + id_Data);
            },

控制器:

 //Récupérer les enregistrements de la feuille de temps : 
          FT.getFT().then(function (result) {
                for(var i=0; i<result.data.ftListe.length;i++)
                {
                 //Récupérer le collaborateur : 
                     Compte.getComptesbyId(result.data.ftListe[i].collaborateurid).then(function(result)
                       {

                          lecollaborateur.push(result.data.col);

                       }); 
                  // Récupérer les taches remplie dans la feuille de temps et le projet équivalent 
                   Tache.getTachebyId(result.data.ftListe[i].tacheid).then(function(result)
                       {
                           task.push(result.data.tachelistes);
                        }); 


                  }
                 $scope.ftListe = result.data.ftListe;
                 $scope.task = task;
                 $scope.lecollaborateur = lecollaborateur;
                 //$scope.projets = projets;
            });
  //my function where I use the task array : 
    $scope.calculTotal= function(id)
       {
         var couttotal=0; 
         var count =0;
         console.log(task.length);
         for (var j=0;j<task.length;j++)
                  {
                     if(task[j].projet_id==id)
                      { //code }
                  }
    };

console.log(task.length)的结果:enter image description here

如何直接获得长度= 5?

1 个答案:

答案 0 :(得分:1)

这是因为您从$ http.get获得的承诺的顺序解决。您可以将所有承诺放在一个数组中,与$q一起使用,只有在所有承诺都得到解决后才返回。

您可以在Angular应用中以相同的方式使用Dim wordObj As Object Dim outFile As Object On Error Resume Next Set wordObj = GetObject(, "Word.Application") If wordObj Is Nothing Then Set wordObj = CreateObject("Word.Application") End If Set outFile = wordObj.Documents.Add wordObj.Visible = True wordObj.Tables.Add Range:=wordObj.Selection.Range, NumRows:=1, NumColumns:=3 wordObj.Selection.Tables(1).Select With wordObj.Selection .TypeText ("test1") .MoveRight (wordObj.wdCell) .TypeText ("test2") .MoveRight (wordObj.wdCell) .TypeText ("test3") .MoveLeft (wordObj.wdCell) .MoveLeft (wordObj.wdCell) .MoveDown Unit:=wordObj.wdLine, Count:=1 End With