Vuex action - записать ответ промиса в переменную

81
07 марта 2022, 23:50

Есть экшн.

messageLastDate: (context, state) => {
            axios.get('api/messageLastDate').then(response => {
                let lastMessage = response.data
            });
            console.log(lastMessage);
        },

В lastMessage записывается промис,потому что код вывода происходит раньше, чем промис решается, это я уже понял. Но мне необходимо значение промиса в переменной, так как я хочу в этой функции с ним еще работать. Как это реализовать,может по аналогии с вызовом мутации есть какие то свойсва типа context.подожди_запиши_в_переменную? Или только каким нибудь сеттаймаутом?

Answer 1

Можно использовать async/await.

async указывает, что функция является асинхронной. await приостанавливает выполнение функции, до получения результата, поэтому в response лежит результат, а не Promise

Важно, что await можно использовать только внутри асинхронных функций.

messageLastDate: async (context, state) => {
    const response = await axios.get('api/messageLastDate');
    let lastMessage = response.data;
    console.log(lastMessage);
},
READ ALSO
Разница между методами arr.map() и arr.filter()

Разница между методами arr.map() и arr.filter()

Поясните разницу между выводом одного и того же кода методами arrfilter() и arr

244
Как в fancybox добавить галерею с picture?

Как в fancybox добавить галерею с picture?

вот код но надо не картинку ,а picture

82
Конфликт между аккордеоном и parallax js

Конфликт между аккордеоном и parallax js

Используется аккордеон написанный на jquery, под ним находится секция с параллакс эффектом, при нажатии на аккордеон, он наезжает на секцию...

82
Как сгруппировать одинаковые данные?

Как сгруппировать одинаковые данные?

Нужна помощь с группировкой данных

108