Nuxt-ожидание после асинхронного действия (this.$store. dispatch)
Я новичок в Nuxt и столкнулся с проблемой, которую не понимаю.
Если я закодирую что-то вроде:
const resp1 = await this.$axios.$post('urlCall1', {...dataCall1});
this.$axios.$post('urlCall2', {...dataCall2, resp1.id});
В resp1.id правильно установлен во 2-м вызове axios => мы ждем завершения первого вызова, прежде чем делать 2-й.
Однако, когда я определяю действия asyn в моем магазине 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.идентификатор неопределенным в действий2.
Я также пытался управлять обещанием "по-старому":
this.$store.dispatch('store1/action1', data1).then(resp1 => this.$store.dispatch('store2/action2', data2, resp1.id))
Результат все тот же => id = undefined в action2
Не могли бы вы, ребята, сказать мне, где я ошибаюсь ?
Заранее спасибо.
Последнее примечание: эти 2 действия находятся в разных магазинах
Ответы - Nuxt-ожидание после асинхронного действия (this.$store. dispatch) / Nuxt - Wait after async action (this.$store.dispatch)

09.09.2020 11:09:22
Vuex не допускает нескольких аргументов, поэтому вы должны передать его как объект, чтобы он выглядел так:
this.$store.dispatch('store2/action2', { ...data2, id: resp1.id });
А потом в магазине:
async action2({ commit, dispatch }, { id, ...data }) {
try {
const respData2 = await this.$axios.$post('urlCall2', { ...data });
commit('MY_MUTATION2', respData2);
} catch (e) {
dispatch('reset');
}
}