ryard firdaus2:
私は、HTTP呼び出しから取得したデータを、解析する際にスタックを持っており、それを解析しますngOnInit
。あなたはこの問題を解決するために私を助けることができますか?私は角度4.感謝を使用しています:)
非同期機能:
async getAsyncData() {
this.asyncResult = await this.serviceDashboard.getAllGeografika().toPromise().then(data => {
return data.length;
});
return this.asyncResult;
}
ngOnInit
私は、データを印刷したい場所:
ngOnInit() {
console.log('Halo from ngOnInit');
console.log('print data :' + this.getAsyncData();
}
クルト・ハミルトン:
あなたはこのようにあなたの関数からの約束を待っていません。
console.log('print data :' + this.getAsyncData();
約束ではなく、約束の解決された値を記録しています
あなたは、少なくとも3つの方法でこれを解決することができます。
1.非同期/のawait
async ngOnInit() {
console.log('Halo from ngOnInit');
const data = await this.getAsyncData();
console.log('print data :' + data);
}
async getAsyncData() {
const data = await this.serviceDashboard.getAllGeografika().toPromise();
return data.length;
}
この一種の休憩の契約OnInit
が、あなたはそれで逃げることができます。
約束を解決2.
これはおそらく、最後のより純粋な形式ですが、それがどのように冗長好まないだろう。
ngOnInit() {
console.log('Halo from ngOnInit');
this.getAsyncData().then(data => {
console.log('print data :' + data);
});
}
async getAsyncData() {
const data = await this.serviceDashboard.getAllGeografika().toPromise();
return data.length;
}
3. RxJS
私の好ましい選択肢。
ngOnInit() {
console.log('Halo from ngOnInit');
this.getAsyncData().subscribe(data => {
console.log('print data :' + data.length);
});
}
getAsyncData(): Observable<any> {
return this.serviceDashboard.getAllGeografika();
}