Что возвращает асинхронная функция?
Асинхронность и Event Loop
Асинхронная функция (`async`) всегда возвращает промис. Возвращённое значение оборачивается в Promise.resolve, а выброшенная ошибка — в Promise.reject.
Что возвращается
async function getValue() {
return 42;
}
const result = getValue();
console.log(result); // Promise { 42 }
result.then((v) => console.log(v)); // 42Даже если вернуть обычное значение, оно оборачивается в промис.
Возврат промиса
Если вернуть промис, двойной обёртки не будет: внешний промис примет его состояние (но это всё равно новый объект промиса):
async function fetchUser() {
return fetch('/user'); // вернётся новый промис с результатом fetch
}Ошибки
throw внутри async-функции превращается в отклонённый промис:
async function fail() {
throw new Error('упал');
}
fail().catch((e) => console.log(e.message)); // 'упал'Как получить результат
- Через
.then():
getValue().then((v) => console.log(v));- Через
awaitв другой async-функции:
const value = await getValue();Коротко для собеседования
async-функция всегда возвращает промис: обычное значение оборачивается в Promise.resolve, throw — в Promise.reject, состояние возвращённого промиса перенимается без двойной обёртки. Результат получают через await или .then().