Задать вопрос
@light___soul
Full Stack Middle Web Developer

Почему не работает async/await в Vue?

<button @click="test">Test</button>
test: async function () {
    await setTimeout(function () {
        console.log("pause");
    }, 2000);
    console.log("end");
},


Почему первой в консоль выходит "end" потом "pause".
В Vue компонентах все работает без проблем

доп. использую Vuex
  • Вопрос задан
  • 5017 просмотров
Подписаться 2 Простой 2 комментария
Решения вопроса 3
@kristenstewartdadada
Frontend Developer
И не должно работать. Await ожидает промис, но setTimeout его не возвращает
Ответ написан
Комментировать
Negezor
@Negezor
Senior Shaurma Developer
const delay = delayed => (
	new Promise(resolve => setTimeout(resolve, delayed))
);

test: async function () {
    console.log("pause");
    await delay(2000);
    console.log("end");
},
Ответ написан
Комментировать
async/await под капотом работают с промисами, а setTimeout не возвращает промис, а вместо этого вызывает коллбек-функцию.
Странно что в Vue компонентах не так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы