我对角度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);
答案 0 :(得分:3)
扩展@ basarat的回答:
Http是异步的,它不会立即返回结果。我希望您在问题中提供的代码在“内部”之前“外部”生成控制台日志。
代码正在将调用发送到服务器(this.httpService.getCalendar...
),然后继续,点击“外部”console.log。
x时间之后,服务器正在响应您的数据。在这一点上,订阅部分被异步命中,你的类被填充(this.classes = data
),最后显示你的“内部”console.log。
答案 1 :(得分:1)
如何分配我的班级变量
在订阅中。 外部代码执行该值的时刻并非来自服务器。您不能使用未来的值 。所以你必须等待它回来再使用它。