console.log получит объект Promise, а не строку 'I made it!'. async-функция всегда возвращает Promise; значение строки станет доступно через await или then.
Определение вывода в консоль (пример 40)
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(...), не меняя конечное значение.