Http Get - 如何维护状态?

时间:2016-10-09 22:00:38

标签: angular typescript ionic2

我对角度Http有点困惑可以观察到。我想将我的observable的结果分配给我的类变量。如果我在订阅中登录,它会打印类变量OK。如果我在订阅之外登录,它会显示一个空数组。如何分配给我的类变量?

classes = [];

constructor(private navController:NavController, private httpService: HttpService) {

    this.httpService.getCalendarConfig()
        .subscribe((data) => {
            this.classes = data;
            console.log("inside" + this.classes);
        });

    console.log("outside" + this.classes);

2 个答案:

答案 0 :(得分:3)

扩展@ basarat的回答:

Http是异步的,它不会立即返回结果。我希望您在问题中提供的代码在“内部”之前“外部”生成控制台日志。

代码正在将调用发送到服务器(this.httpService.getCalendar...),然后继续,点击“外部”console.log。

x时间之后,服务器正在响应您的数据。在这一点上,订阅部分被异步命中,你的类被填充(this.classes = data),最后显示你的“内部”console.log。

答案 1 :(得分:1)

  

如何分配我的班级变量

在订阅中。 外部代码执行该值的时刻并非来自服务器。您不能使用未来的值 。所以你必须等待它回来再使用它。