🧱 Суть

async-функция всегда возвращает Promise.
Если результат функции нужен снаружи – его необходимо вернуть через return.

📦 Проблема

1. Забывают return

async function getUserName() {
  // return забыли
}
 
const name = await getUserName();

В результате:

name === undefined

2. Не понимают, когда return обязателен

Иногда функция должна вернуть данные, а иногда – просто выполнить действия.

✅ Решение

Использовать return, если результат функции будет использоваться после await.

💻 Код

Возврат значения:

async function getUserName() {
  return 'Евгений';
}
 
const name = await getUserName();
// name === 'Евгений'

Без return:

async function getUserName() {}
 
const name = await getUserName();
// name === undefined

Возврат данных после fetch:

async function fetchUser() {
  const response = await fetch('/user.json');
  const data = await response.json();
 
  return data;
}
 
const user = await fetchUser();

Функция без возвращаемого значения:

async function logUser() {
  const response = await fetch('/user.json');
  const data = await response.json();
 
  console.log(data);
}
 
await logUser();

Когда нужен return

Если нужно получить результат из функции, то return подходит.
Если нужно выполнить действия внутри функции, то он не нужен

Лайфхак

Если пишешь:

const result = await myFunction();

то внутри myFunction всегда должен быть return, иначе result будет undefined.

🎯 Вывод

  • async всегда возвращает Promise
  • return нужен, если результат будет использоваться после await
  • без return функция вернёт Promise<undefined>
  • если функция только выполняет действия – return не обязателен

🔗 Связано