私はこの作業を何回試みたのかを数えなくなりました。私はそれを得ていない。角度apiがループ/関数内で特定の順序で呼び出す
のは、私は、次のAPI呼び出しを持っているふりをしてみましょう:
API /顧客(CUST)
API /オーダー(受注)
API /製品(商品コード)関連
API /を(relatedid)
すべてのことが言われると、私は配列とサブ配列(以下で説明する)としてすべてのデータを含む単一のオブジェクトが必要です。
私はapi/customerのapi呼び出しを行う必要があります。リターンは、オブジェクトの配列としての顧客の以前の注文であることになります。彼らは3つの注文をしたふりをしよう。
各オブジェクトの内部にはさまざまなキー:値のペアがあり、それ自体がproductidという配列の「products」と呼ばれるものを含みます。今
私はすべての製品ID番号を通って、それぞれ1とループは、呼び出す必要があります:
API /製品(商品コード)
これも各製品のを見つけるために、ループスルーしなければならないの配列を返します。 "relatedid"値。その後、各顧客のそれぞれのために、各製品に関連するすべての製品を返す
API /関連(relatedid)
:
は、次に上記ループ内で私は再びでAPIを連絡する必要があります。
1つの顧客が3つの注文を持ち、各注文に5つの製品があり、各製品に10の関連製品がある可能性があります。
どのようにこのようなコードを作成し、上から下への各API呼び出しが完了する前に完了していることを確認しますか?あなたはそれを複数のループの中でどうやってやりますか?
すべてを言って、私はこのような何かを期待しています行われます。
{
customerid: 10
previousOrderids: {10, 11, 12}
orderedProducts: {10: {101, 102, 103, 104}, 11:{201, 202, 203, 204}, 12:{301, 302}
relatedProducts: {101: {5, 6, 7}, 102: {7,8,9} } (etc...)
}
のように。私は上記の簡潔さを簡潔にしておきましたが、私は静的なデータ(顧客のID)を使って1回のAPIコールを開始し、次にそこからデータの「ツリー」を構築しようとしていることは明らかですAPI応答に含まれるものを使用して呼び出します。
私は約束、$ q.all、.thenなどについて知っていますが、私が試したことはすべて私が周りを円で回るようにします。素敵なコンパクトな関数を作り、各ビットを扱うことを忘れてしまいます。私は基本を理解していますが、複雑なものを組み立てる実際の現実世界の例は見たことがありません。
複数の非同期アクションを処理する方法を理解する助けになる人がいますか?特に、複数の非同期アクションをさまざまなループで呼び出す必要があり、移動する前に完了する必要がある場所はありますか?
PHPのようなサーバーサイド言語でこれをやったことがありますが、現在のアクションが完了するまでコードが進まない場合は簡単です。
私が試したコードのいくつかは投稿したいが、それはトータルジョークだ。
ありがとうございます。私はあなたが角度のコードを持っていると仮定しています:
「約束」を使用します。あなたはこれをチェックすることができます:https://docs.angularjs.org/api/ng/service/$http もし安心すれば '$ resource'も使うことができます。 – batmaniac7
あなたが言ったように、あなたのコードを投稿してください。多分助けてください。 – developer033