我正在尝试获取订阅中的数据。当我控制台在订阅中登录时,数据可用。 但是当我尝试将数据存储到变量并且控制台将其记录在订阅之外时,数据是未定义的。
如何从订阅中获取结果并将其存储在变量中?
我是离子和棱角分明的新手。 :) 感谢。
@Injectable()
export class UserServiceProvider {
users: any;
constructor(public http: Http) {
}
loadUsers() {
this.http.get("https://randomuser.me/api/?results=1")
.map(res => res.json())
.subscribe(data => {
//works fine
console.log(data.results);
this.users = data.results
});
//the variable is undefined.
console.log(this.users);
}
}
答案 0 :(得分:0)
您的函数首先执行console.log(this.users),因此它给出了undefined,因为它没有得到响应并将其存储在数据中并分配给您的变量。
试试这个:
loadUsers() {
this.http.get("https://randomuser.me/api/?results=1")
.map(res => res.json())
.subscribe(data => {
//works fine
console.log(data.results);
this.users = data.results},
() => { console.log(this.users); } );
}
答案 1 :(得分:0)
实际上,您正在存储数据,而users
变量已包含所需的data.results
数据。这不是离子或角度的问题。
简单地说,subscribe充当异步函数。当您尝试打印时,该过程正在进行中。因此undefined
错误。
如果您想在同一时间看到数据,请执行以下操作;
() => console.log(this.users)