angularJs:array.push的长度等于0

时间:2017-05-18 09:29:01

标签: angularjs

我试图使用push()函数的结果,但我得到结果表的长度为0,这是我的代码:

 Task.getTaskbyId(result.data.ftListe[i].tacheid).then(function(result)
                   {               
                      task.push(result.data.tachelistes);

                   }); 

              }
              console.log(task.length); // here i get 0 
              for(var j=0;j<task.length;j++)
              {
                //code 
              }

为什么长度等于0? Ps:当我在视图中使用任务表时,我得到里面的对象,所以它不是空的。

我有什么遗失的东西吗?

2 个答案:

答案 0 :(得分:0)

这是因为Task.getTaskbyId是异步的,如果您在其回调中将项目推送到数组,那么您已将for-loop移动到callback

注意

如果在pushconsole.log行放置断点,您会看到console.log先运行。

Task.getTaskbyId(result.data.ftListe[i].tacheid).then(function(result)
{               
    task.push(result.data.tachelistes);
    console.log(task.length); // here i get 0 
    for(var j=0;j<task.length;j++)
    {
        //code 
    }
}); 

答案 1 :(得分:0)

我想你可能想要达到的目标更像这样:

var tasks = [];    
Task.getTaskbyId(result.data.ftListe[i].tacheid).then(function(result)
                       {
                          result.data.tachelistes.forEach(function(t) {
                              tasks.push(t);
                          });
                       }); 
                  }
                  console.log(tasks.length); // here i get 0 
                  tasks.forEach(function(task) {
                             //
                  });