> Что происходит при запуске функции с промисами и почему результат может быть пустым? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Альфа-банк, DigitalSail

Стек: JavaScript

> Пример ответа

При запуске функции с промисами выполнение кода не блокируется - промис попадает в очередь микрозадач (microtask queue) и обрабатывается асинхронно после завершения текущего синхронного кода. Результат может быть пустым, если:

  1. Не дождались разрешения промиса - функция возвращает промис, но вызывающий код не использует await или .then(), поэтому результат (например, данные из API) ещё не получен к моменту проверки.

  2. Промис был отклонён (rejected) без обработки ошибки - если нет .catch() или try/catch с await, ошибка «проглатывается», и результат остаётся undefined.

  3. Функция не возвращает промис явно - например, внутри async функции забыли return, тогда она возвращает Promise.resolve(undefined).

  4. Гонка состояний (race condition) - промис ещё не завершился, а код уже пытается использовать его результат в синхронном контексте.

Пример:

JAVASCRIPT
async function getData() {
const response = await fetch('/api'); // асинхронно
return response.json();
}
const data = getData(); // data - промис, а не данные
console.log(data); // Promise { <pending> } - пусто

Правильно: const data = await getData();

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью