1

我正在使用 Angular 6 服务从节点服务器获取对象。

getMasterObj () {

   this.http.get(this.url1).subscribe(
        (data) =>{
        this.masterChartObj1 = data;
        console.log(this.masterChartObj1) // data is getting printed
    })
        console.log(this.masterChartObj1) // undefined

}

在同一个类中,我将一个对象定义为

public masterChartObj1;

我正在使用 subscribe 方法中收到的数据初始化该对象。正如在 console.log 中检查的那样,它被打印出来,但在订阅者方法之外未定义。

我也以另一种方式尝试过相同的方法,但输出仍然相同。

 getMasterObj () {
       let parent_scope = this;
       this.http.get(this.url1).subscribe(
            (data) =>{
            parent_scope.masterChartObj1 = data;
            console.log(parent_scope.masterChartObj1) // data is getting printed
        })
            console.log(this.masterChartObj1) // undefined

    }

请让我知道,如果我做错了什么......

4

2 回答 2

1

这是因为 observables 是异步的。您正在订阅 subscribe 方法中的异步数据。在 subscribe 方法中初始化之前,您无法访问该数据。这就是为什么你变得不确定

于 2018-05-24T09:40:03.283 回答
0

这是因为您的方法包含 asyc 方法调用。

this.http.get(this.url1).subscribe(
        (data) =>{
        this.masterChartObj1 = data;
        console.log(this.masterChartObj1) // data is getting printed
    })

这是一个异步调用,数据一旦可用,它将以(data)块的形式打印。

因此,如果您想为该数据添加一些绑定,您需要在data块内执行此类任务。

于 2018-05-24T09:40:19.087 回答