我试图使用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:当我在视图中使用任务表时,我得到里面的对象,所以它不是空的。
我有什么遗失的东西吗?
答案 0 :(得分:0)
这是因为Task.getTaskbyId
是异步的,如果您在其回调中将项目推送到数组,那么您已将for-loop
移动到callback
。
注意
如果在push
和console.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) {
//
});