Мой дом. vue требуется два асинхронных c действия:
created() {
this.$store.dispatch('GET_LATEST_POLL');
this.$store.dispatch('INIT_STREAM');
},
Это их реализация Vuex:
GET_LATEST_POLL: async (context) => {
const pollData = await axios.get(`${BFF_ENDPOINT}/polls/last`, getAuthHeader(context));
const item = pollData.data.data;
context.commit('SET_LATEST_POLL', item);
},
INIT_STREAM: async (context) => {
const streamData = await axios.get(`${API_ENDPOINT}/polls/?obd=date`, getAuthHeader(context));
const items = streamData.data.data;
items.filter(item => item._id !== context.state.latestPoll._id);
context.commit('SET_STREAM', items);
},
Я понял, что INIT_STREAM зависит от LATEST_POLL context.state.latestPoll
. Я не хочу сериализовать оба действия, я хочу, чтобы они оба общались с бэкэндом паралельно. Но тогда мне нужно INIT_STREAM, чтобы дождаться результата LATEST_POLL.
Как мне его достичь? Должен ли я объединить логи c в одно действие, которое запускает два обещания, а затем await Promise.all([latestPoll, items])
? Это правильный подход?