0
私のページの値をconstructor
で開始したときに問題が発生しました。私はprovider
を呼び出してデータを読み込みます。内部にservice
コールがありますが、データが呼び出されているのがわかりましたが、サービス外で変数を呼び出すとundefined
と表示されました。何が起こった?サービスプロバイダに電話をかけた後に2の定義されていない値
HomePage.ts
export class HomePage {
public data: any;
constructor(private nav: NavController, private auth: Auth, private params: NavParams) {
this.auth.getProfile().then((profile) => {
this.data = profile;
console.log('here i can see data correctly ' + JSON.stringify(this.data));
})
console.log('here data undefined ' + JSON.stringify(this.data));
}
あなたが正常に動作しているservice
getProfile(){
return this.getToken().then((token) => {
// console.log(token);
if (token) {
return new Promise(resolve => {
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
try {
this.http.get('http://laraveldev/api/users/get_user?token=' + token).subscribe(data => {
this.profile = data.json().data;
//console.log('getProfile ' + JSON.stringify(this.profile));
resolve(this.profile);
});
} catch (error) {
console.log(error);
this.data = { status: 'error' };
resolve(this.data);
}
});
}
});
}
最初のコンソールログあなたがいる理由である約束の解決のコールバックの内側に書かれている:あなたが知っているしていない何を、その情報を使用する準備ができて(そしてあなたへ
this.data
プロパティを割り当てられている)であるがですデータが表示されているのを見ると、次のコールバックの外側にあるので、そのステートメントが実行されるまでに約束が解決されていない可能性があります。 – wolverine