首页 > 解决方案 > 无法在 Angular 6 中使用 subscribe() 方法之外的获取数据

问题描述

我正在使用 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

    }

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

标签: angularobservableangular2-servicessubscriberxjs6

解决方案


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


推荐阅读