Очень частая история в JavaScript:
async function getUser() {
return { name: "Кодик" };
}
const user = getUser();
console.log(user);
Новичок ожидает:
{ name: "Кодик" }
А получает что-то вроде:
Promise { ... }
И тут начинается: «JavaScript, ты вообще что мне вернул?» 😄
Всё просто: функция с async всегда возвращает Promise.
То есть getUser() говорит не:
вот твой результат
а скорее:
результат будет, подожди немного
Чтобы дождаться его, нужен await:
const user = await getUser();
console.log(user);
Теперь в user уже лежит обычный объект.
📌 Важно: await можно использовать внутри async-функции:
async function main() {
const user = await getUser();
console.log(user);
}
Без await ты работаешь не с самим результатом, а с обещанием получить его позже.
Отсюда и куча странных ошибок вроде:
user.name
а name там нет — потому что user пока вообще не пользователь. Это Promise.
Хорошая ассоциация: Promise — это талон на заказ, а await — момент, когда ты дождался и забрал сам заказ 😄