Что возвращает асинхронная функция

«Что возвращает асинхронная функция» — вопрос из категории Асинхронность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Асинхронная функция всегда возвращает промис. Даже если она возвращает обычное значение, оно автоматически оборачивается в промис. Если функция выбрасывает ошибку, возвращается отклонённый промис.

Пример:

async function foo() {
  return 42;
}

foo().then(console.log); // 42

Если используется throw:

async function bar() {
  throw new Error('Oops');
}

bar().catch(console.error); // Error: Oops

Ключевые моменты:

  1. Возвращаемое значение всегда Promise
  2. await можно использовать только внутри async-функций
  3. Можно использовать try/catch для обработки ошибок