【发布时间】:2016-08-26 02:48:47
【问题描述】:
我一直在学习。我的问题是:为什么会这样:
let user = {
firstname: '',
secondname: ''
}
let hz = new Horizon({host: "164.132.192.28:3100"});
let table = hz('users');
hz.connect();
table.find(1).fetch().subscribe((value) => {
user = {
firstname: value.firstname,
secondname: value.secondname
}
//OR:
user.firstname = value.firstname;
user.secondname = value.secondname;
});
console.log(user);
给我这个:
以及为什么我无法获得价值?:
console.log(user.firstname);
//prints nothing
我的第三个问题:如何将查询结果保存到一个对象中并在查询之外使用它?如果我使用“return”关键字,那么结果是相似的。我知道这是一个新手问题,但我真的很难解决这个问题......有人可以帮助我吗?
【问题讨论】:
-
这个问题每天被问两次。在您创建 异步 请求后立即执行console.log(user)。很久之后,当响应终于回来时,传递给 subscribe() 的回调函数中的代码被执行。这就是为什么你需要传递一个回调函数。如果调用是同步的,它将直接返回数据,并且不会用 observables 和 callacks 来打扰您。
标签: javascript typescript horizon