私は次のコードにいくつかの助け受け取りたい:私はDataAssociationオブジェクトにDataAssociationIDSの配列を変換しようとしています上記のコードでは角度4連鎖のHTTP GETリクエスト(約束)
fillDataAssociationsArray(DataAssociationIDS: string[]) {
const promise = new Promise((resolve, reject) => {
for (const id of DataAssociationIDS) {
this.api.getDataAssociationByID(id).toPromise().then(
data => {
this.DataAssociations.push(data.body.entities.DATAASSOCIATIONS[0]);
});
}
resolve();
});
return promise;}
を、そしてよりそれらをDataObjects []のローカル配列にプッシュします。私は配列(パラメータ)からIDを持つ各DataObjectを取得し、バックエンドから正しいDataObjectを返すAPIへのget Requestを実行するよりも、
public getDataAssociationByID(dataAssociationID: string) {
return this.http.get<DataAssociationInterface>(this.apiURL + 'typeOne=DATAASSOCIATIONS&id=' + dataAssociationID,
{ observe: 'response' });}
私はいくつかのHTTPは私のAPIからの要求、各要求が前の要求の結果に依存を取得チェーンにしたいです。だから私の考えは、これらの要求を約束し、then()メソッドを次のように使用することでした:firstRequest()。then(SecondRequest()。then(...))など。
は
ngOnInit() {
this.fillDataAssociationsArray(this.extractDataAssociationIdsFromActivities()).then(
() => console.log(this.DataAssociations)
//() => console.log(this.DataAssociations[0].languages.DUT.name)
);}
First result Second line result
次いで()のこの最初の行を試みるマイ - 私は第二行(コメント)をしようとするブロックが、しかし、正しい結果のローカル配列を印刷しました定義されていない項目の名前を出力する???そして、次のリクエストをチェーンすると、明らかに定義されていない読み込みができなくなります。
あなたの先生はヒーローです! if文が問題を解決し、実際にすべての呼び出しが実行される前にPromiseが解決されました。 –
恐ろしい!お力になれて、嬉しいです :) –