2017-12-29 25 views
0

購読内のデータを取得しようとしています。私が購読者の中にログオンすると、そのデータが利用可能になります。 しかし、変数にデータを格納しようとすると、購読外にログが記録されると、データは定義されません。Ionic:購読者からデータを取得

サブスクリプションから結果を取得して変数に格納するにはどうすればよいですか?

私はイオンと角度が新しいです。 :) ありがとうございます。それが応答を取得したデータに保管し、あなたの変数に割り当てられていないので、それは未定義与えますので

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

あなたはすでに変数に保存しています。「Observables」は**非同期**です。あなたが 'user'変数をコンソールログした後にデータが返されます –

答えて

0

あなたの機能は、最初はconsole.log(this.users)を実行します。

これを試してみてください:

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) 
関連する問題