Ionic:从订阅中获取数据

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

我试图获取订阅内的数据。当我控制台在订阅中登录时,数据可用。但是当我尝试将数据存储到变量并且控制台将其记录在订阅之外时,数据是未定义的。

如何从订阅中获取结果并将其存储在变量中?

我是离子和棱角分明的新手。 :) 谢谢。

@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);
  }
}
angular ionic2 subscribe
2个回答
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); } );

   }

0
投票

实际上你正在存储数据,而users变量已经包含了所需的data.results数据。这不是离子或角度的问题。

它只是订阅充当异步函数。当您尝试打印时,该过程正在进行中。因此undefined错误。

如果你想在同一时刻看到数据,请执行以下操作;

() => console.log(this.users) 
© www.soinside.com 2019 - 2024. All rights reserved.