異なるAPIエンドポイントに対して2つの非同期呼び出しを行う必要があるとします。 2回目の呼び出しのクエリパラメータは、私が最初の1Vue.jsのサーバーへのチェーン要求
クイック概要から受け取るものに依存します。
まずエンドポイントは、特定の順序でいくつかのIDを提供し
セカンド(例えば、評価順にソート)
:エンドポイントは、これらのID
エンドポイントの例について、いくつかの「メタ情報」を提供します
GET /エンドポイント/ 1
応答形式:
[
{
id: 1,
rating: 0.67
},
{
id: 2,
rating: 0.51
},
{
id: 3,
rating: 0.45
},
...
]
GET /エンドポイント/ 2、ID = 1,2
// I receive those ids from call to the first endpoint
応答形式:
[
{
id: 1,
gender: "male",
age: 20,
profession: "Programmer"
},
{
id: 2,
gender: "transgender",
age: 27,
profession: "ML Engineer"
}
]
その後、私はクレートに鍵を決めた私は私が持っていると私のテンプレートにメタ情報を表示するすべてのIDをループする必要があるが、それはエンドポイント/ 1
の応答にあったように順序が同じでなければなりません。これらのニーズに対応するvalのストレージ、すなわち:
const storage = {
1: {
gender: "male",
age: 20,
profession: "programmer"
}
}
も、私はすなわち、最初のエンドポイントからの人物との変数を持っている:
const persons = [
{
id: 1,
rating: 0.67
},
...
]
ので、私のテンプレートで、私は
のようになめらかに行うことができます<p v-for="p in persons">{{ storage[p.id].gender }}</p>
質問は次のとおりです。私は要求を開始する関数を呼び出した後、すべてのデータを利用できるようにするためにどのようにチェーン化できますか?
* 2番目のエンドポイントには2つのIDのみを照会できるため、それぞれのIDのリストをループして、それぞれを個別に呼び出す必要があります。実際のアプリでは、私が最初のエンドポイントから〜100個のIDを持っているので、私は二番目の
あなたの答えにはvuexの例が含まれますか? – LiranC
idsのリストを受け取ったら、['Promise.all'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all)を使って続行する前にすべてのデータがあることを確認してください。よりスマートなのは、IDを追加するための突然変異を宣言し、それらが来るようにレンダリングすることです。 –
サイドノート: "トランスジェンダー"は性別ではありません。 https://ux.stackexchange.com/questions/25826/how-can-i-deal-with-diverse-gender-identities-in-user-profiles – ceejayoz