← Назад к вопросам

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

1.0 Junior🔥 211 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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

Асинхронная функция ВСЕГДА возвращает Promise, независимо от того, что находится в её теле.

Основное правило

// Обычная функция
function regular() {
  return 42;
}
console.log(regular());  // 42

// Асинхронная функция
async function asyncFunc() {
  return 42;
}
console.log(asyncFunc());  // Promise { 42 }

Когда вы пишете return 42 в async функции, она на самом деле возвращает Promise.resolve(42).

Эквивалентные функции

// Это:
async function async1() {
  return 42;
}

// Эквивалентно этому:
function sync1() {
  return Promise.resolve(42);
}

// Оба возвращают Promise с одинаковым результатом

Различные возвращаемые значения

Примитивные значения:

async function getString() {
  return 'Hello';
}
getString().then(r => console.log(r));  // 'Hello'

Объекты:

async function getObject() {
  return { id: 1, name: 'John' };
}
getObject().then(r => console.log(r));  // { id: 1, name: 'John' }

Никакого return:

async function nothing() {
  console.log('Doing something');
}
nothing().then(r => console.log(r));  // undefined

Обработка Promise

С then():

async function getData() {
  return 42;
}

getData().then(result => console.log(result));  // 42

С await:

async function main() {
  const result = await getData();
  console.log(result);  // 42
}

Обработка ошибок

Throw в async функции:

async function throwError() {
  throw new Error('Ошибка');
}

throwError()
  .then(r => console.log(r))
  .catch(e => console.error(e.message));  // 'Ошибка'

Практический пример

async function loadUser(userId) {
  const response = await fetch(`/api/users/${userId}`);
  return response.json();  // возвращает Promise
}

// Использование:
const userPromise = loadUser(1);
userPromise.then(user => console.log(user));

// Или с await:
const user = await loadUser(1);
console.log(user);

Асинхронная функция - это синтаксический сахар для работы с Promises. Она делает код более читаемым, но всегда возвращает Promise.

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