Http Get - 如何维护状态?

问题描述 投票:0回答:2

我对角度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);
angular typescript ionic2
2个回答
3
投票

要扩展@ basarat的答案:

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

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

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


1
投票

如何分配给我的类变量

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

© www.soinside.com 2019 - 2024. All rights reserved.