1

Nuxt は初めてで、理解できない問題に直面しています。

次のようなコードを作成した場合:

const resp1 = await this.$axios.$post('urlCall1', {...dataCall1});
this.$axios.$post('urlCall2', {...dataCall2, resp1.id});

resp1.id は 2 番目の axios 呼び出しで適切に設定されます => 2 番目の呼び出しを行う前に、最初の呼び出しが完了するのを待ちます。

ただし、vuex ストア ex で非同期アクションを定義すると、次のようになります。

  async action1({ commit, dispatch }, data) {
    try {
      const respData1 = await this.$axios.$post('urlCall1', { ...data });
      commit('MY_MUTATION1', respData1);
      return respData1;
    } catch (e) {
      dispatch('reset');
    }
  },
  async action2({ commit, dispatch }, data, id) {
    try {
      const respData2 = await this.$axios.$post('urlCall2', { ...data });
      commit('MY_MUTATION2', respData2);
    } catch (e) {
      dispatch('reset');
    }
  }

次に、vue コンポーネントで次のようなアクションを実行します。

const resp1 = await this.$store.dispatch('store1/action1', data1);
this.$store.dispatch('store2/action2', data2, resp1.id);

resp1.id は action2 で定義されていません。

私はまた、約束を「古い方法」で管理しようとしました:

this.$store.dispatch('store1/action1', data1).then(resp1 => this.$store.dispatch('store2/action2', data2, resp1.id))

結果は同じです => id = action2 で未定義

どこが間違っているのか教えてください。

前もって感謝します。

最後の注意: 2 つのアクションは別のストアにあります

4

1 に答える 1