无法访问Array的元素

时间:2017-11-25 16:29:21

标签: arrays angular observable

我正在使用服务向数组添加元素,该服务成功添加了元素。我可以看到用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

enter image description here

然而,当我使用类似的东西时:

console.log(this.openSet[0]);

我得到'undefined'的输出。我不确定我现在是否真的很厚,无论我是否正在访问它......

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

subscribe工作异步,因此console.log()将在forEach循环运行之前记录。它与在这段代码中的异步行为相同

let foo = [];

setTimeout(() => {
  foo.push(1);
  foo.push(2);
}, 500);

console.log(foo); // logs []

有关如何使用异步的选项,请参阅重复的帖子。

How to return the response from an asynchronous call?