Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что возвращает асинхронная функция?
Асинхронная функция ВСЕГДА возвращает Promise, независимо от того, что находится в её теле.
Основное правило
// Обычная функция
function regular() {
return 42;
}
console.log(regular()); // 42
// Асинхронная функция
async function asyncFunc() {
return 42;
}
console.log(asyncFunc()); // Promise { 42 }
Когда вы пишете return 42 в async функции, она на самом деле возвращает Promise.resolve(42).
Эквивалентные функции
// Это:
async function async1() {
return 42;
}
// Эквивалентно этому:
function sync1() {
return Promise.resolve(42);
}
// Оба возвращают Promise с одинаковым результатом
Различные возвращаемые значения
Примитивные значения:
async function getString() {
return 'Hello';
}
getString().then(r => console.log(r)); // 'Hello'
Объекты:
async function getObject() {
return { id: 1, name: 'John' };
}
getObject().then(r => console.log(r)); // { id: 1, name: 'John' }
Никакого return:
async function nothing() {
console.log('Doing something');
}
nothing().then(r => console.log(r)); // undefined
Обработка Promise
С then():
async function getData() {
return 42;
}
getData().then(result => console.log(result)); // 42
С await:
async function main() {
const result = await getData();
console.log(result); // 42
}
Обработка ошибок
Throw в async функции:
async function throwError() {
throw new Error('Ошибка');
}
throwError()
.then(r => console.log(r))
.catch(e => console.error(e.message)); // 'Ошибка'
Практический пример
async function loadUser(userId) {
const response = await fetch(`/api/users/${userId}`);
return response.json(); // возвращает Promise
}
// Использование:
const userPromise = loadUser(1);
userPromise.then(user => console.log(user));
// Или с await:
const user = await loadUser(1);
console.log(user);
Асинхронная функция - это синтаксический сахар для работы с Promises. Она делает код более читаемым, но всегда возвращает Promise.