Ionic:从订阅中获取数据

时间:2017-12-29 06:22:29

标签: angular ionic2 subscribe

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

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

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

@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);
  }
}

2 个答案:

答案 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)