В этом руководстве мы рассмотрим, как создать цикл асинхронных вызовов во 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)
Не писать ответ