В этом руководстве мы рассмотрим, как создать цикл асинхронных вызовов во Vue.js, используя async/await внутри цикла (например, for, while или forEach) или с помощью Promise.all для одновременного выполнения нескольких вызовов. Ниже представлены два примера: первый пример с использованием async/await внутри цикла для последовательного выполнения действий, и второй пример с использованием Promise.all для их параллельного выполнения.
Пример 1: Async/await внутри цикла
Подробнее об async/await с примерами на Vue
В вашем компоненте Vue:
export default { methods: { async performDispatches() { const ids = [1, 2, 3, 4, 5]; for (const id of ids) { try { await this.$store.dispatch('yourAction', id); console.log(`Вызвано для элемента: ${id}`); } catch (error) { console.error(`Ошибка при вызове для элемента: ${id}`, error); } } }, }, };
В вашем хранилище Vuex:
export default new Vuex.Store({ actions: { async yourAction({ commit }, id) { // Выполните здесь вашу асинхронную операцию // Например, получите данные с API или выполните вычисление }, }, });
Пример 2: Использование Promise.all
В вашем компоненте Vue:
export default { methods: { async performDispatches() { const ids = [1, 2, 3, 4, 5]; try { await Promise.all(ids.map((elem) => this.$store.dispatch('yourAction', id))); console.log('Все вызовы завершены'); } catch (error) { console.error('Ошибка при вызове действий:', error); } }, }, };
В вашем хранилище Vuex:
export default new Vuex.Store({ actions: { async yourAction({ commit }, id) { // Выполните здесь вашу асинхронную операцию // Например, получите данные с API или выполните вычисление }, }, });
В обоих примерах замените yourAction
на имя действия, которое вы хотите вызвать, и замените массив elements
на данные, которые вам нужно обработать. В первом примере вызовы будут выполняться последовательно, а во втором примере - параллельно, и код будет ждать завершения всех вызовов перед тем, как продолжить.
Статьи по теме JS Promise
- Использование Promise.all с примерами на VueJs
- Использование async/await в JavaScript с Vue.js
- Создание цикла асинхронных вызовов во Vue.js
Комментарии (0)
Не писать ответ