Определение вывода в консоль (пример 40)

console.log получит объект Promise, а не строку 'I made it!'. async-функция всегда возвращает Promise; значение строки станет доступно через await или then.

Короткий ответ

Что ответить на собеседовании

console.log получит объект Promise, а не строку 'I made it!'. async-функция всегда возвращает Promise; значение строки станет доступно через await или then.

Подробный разбор

Ответ с пояснениями

Условие

Укажите, какое значение будет выведено функцией console.log в приведённом коде.

 async function getData() {
    return await Promise.resolve('I made it!');
}

const data = getData();
console.log(data); //

Ответ

console.log получит объект Promise, а не строку 'I made it!'. async-функция всегда возвращает Promise; значение строки станет доступно через await или then.

getData().then(value => console.log(value)); // I made it!

await внутри getData приостанавливает только эту async-функцию, не вызывающий синхронный код. При непосредственном console.log(data) Promise ещё может отображаться как pending; вид и момент отображения состояния зависят от консоли. Для прямого получения строки вызывающий код тоже должен использовать await в допустимом async-контексте. Здесь внутренний return await можно заменить return Promise.resolve(...), не меняя конечное значение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее