我正在使用服务向数组添加元素,该服务成功添加了元素。我可以看到用console.log填充的数据
但我无法访问该元素。
this.routingService.getNode(startNode).subscribe(node => {
node.forEach(node => {
this.openSet.push(new MapNode(node.id, node.lon, node.lat, this.routingService.getNodeNeighbours(node.id)));
});
});
console.log(this.openSet); // this prints out the below screenshot
然而,当我使用类似的东西时:
console.log(this.openSet[0]);
我得到'undefined'的输出。我不确定我现在是否真的很厚,无论我是否正在访问它......
有什么想法吗?
答案 0 :(得分:1)
subscribe
工作异步,因此console.log()
将在forEach
循环运行之前记录。它与在这段代码中的异步行为相同
let foo = [];
setTimeout(() => {
foo.push(1);
foo.push(2);
}, 500);
console.log(foo); // logs []
有关如何使用异步的选项,请参阅重复的帖子。