Ответ
В JavaScript (и, соответственно, в Node.js) асинхронная функция (async function) всегда возвращает Promise. Если в такой функции нет оператора return, она неявно возвращает undefined, и Promise разрешится именно с этим значением.
Пример:
async function fetchDataAndLog() {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
// Нет оператора return
}
const resultPromise = fetchDataAndLog(); // resultPromise — это Promise
resultPromise.then((value) => {
console.log('Результат промиса:', value); // Выведет: Результат промиса: undefined
});
Почему так происходит? Ключевое слово async заставляет функцию возвращать Promise. Тело функции выполняется, и если интерпретатор не встречает return, он действует по стандартному правилу: функция завершается, возвращая undefined. Это undefined автоматически оборачивается в успешно выполненный Promise (Promise.resolve(undefined)).
Это важно учитывать при цепочке вызовов или при использовании async функций в качестве обработчиков, где может ожидаться конкретное значение.