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