Проверяет понимание того, что async-функции всегда возвращают Promise, даже если не использовать await при вызове.
Когда вы объявляете функцию с ключевым словом async, JavaScript автоматически оборачивает её возвращаемое значение в Promise. Это сделано для того, чтобы все асинхронные операции имели единый интерфейс. Даже если функция не содержит await, она всё равно возвращает Promise, который разрешается с результатом функции.
Например, если функция возвращает число, то на самом деле она возвращает Promise, который разрешается этим числом. Это позволяет вызывающему коду использовать .then() или await для получения результата, независимо от того, есть ли внутри асинхронные операции.
async function getNumber() {
return 42;
}
const result = getNumber();
console.log(result); // Promise { 42 }
result.then(value => console.log(value)); // 42
// Или с await
async function main() {
const value = await getNumber();
console.log(value); // 42
}
main();В этом примере getNumber не содержит await, но всё равно возвращает Promise. Это позволяет единообразно работать с асинхронными и синхронными функциями.
Это поведение полезно при создании API, где вы хотите, чтобы все функции возвращали Promise, даже если они синхронные. Это упрощает композицию и обработку ошибок. Например, в библиотеках для работы с базами данных или HTTP-запросами все методы возвращают Promise, что позволяет использовать async/await в любом месте.
Используйте async для функций, которые могут выполнять асинхронные операции, но помните, что даже без await они возвращают Promise. Это делает код более предсказуемым и удобным для работы с асинхронными паттернами.