複数のhttpリクエストからデータを取得しようとしているので、subscribe()のネストを避けることにしました。非同期の待機スタイルでコードを記述したいだけです。
const diagnostics = this.http.get(url, {params: params}).toPromise()
console.log(diagnostics);
しかし、私はこれを手に入れます:
// ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value: Array(0)}
データを抽出するための処理方法がわかりません。
のようなコールバックを回避する方法はありますか?
.then(res => {}).catch()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
これを見てみたいと思うかもしれませんが、約束の配列を照合し、本質的にすべての約束が完了するのを待ってから、値を操作することができます。
myPromiseArray.Push(this.http.get(url, {params: params}).toPromise()) Promise.all(myPromiseArray).then(alltheValuesInAnArray => {})
お気づきのとおり、.toPromise
メソッドの結果はPromiseオブジェクトです。 async/awaitスタイルを使用するには、最初に関数にasync
キーワードを付加してasync関数でコードをラップし、次にawait
キーワードで非同期操作を待機するようにコードに指示する必要があります。あなたの場合、それはhttpリクエストです。
async function run(){
try{
const diagnostics = await (this.http.get(url, {params: params}).toPromise());
// wait for asynchronous request
console.log(diagnostics);
} catch(err){
// request failed
console.error(err);
}
}
run();