async function
Функция, которая всегда возвращает промис и внутри которой можно использовать await.
Доступно с: ES2017
Синтаксис
async function name() { … } / async () => { … }Примеры
Результат async-функции — промис:
async function getNumber() {
return 42;
}
console.log(getNumber() instanceof Promise);
console.log(await getNumber());Результат:
true
42Последовательные шаги с обработкой ошибок:
const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
const loadUser = async (id) => {
await wait(50);
if (id < 0) throw new Error('Bad id');
return { id, name: 'Anna' };
};
try {
const user = await loadUser(1);
console.log(user.name);
await loadUser(-1);
} catch (error) {
console.log(error.message);
}Результат:
Anna
Bad idПримечания
throw внутри async-функции превращается в отклонённый промис, а return — в выполненный. Стрелочные функции и методы тоже бывают async.
См. также
- await — Ждёт результата промиса и возвращает его значение.
- Promise — Обещание результата, который будет готов позже: успех или ошибка.
- try...catch — Перехватывает ошибки, чтобы программа не остановилась.
Вопросы и ответы по теме
В учебнике
- async и await — Асинхронные функции в JavaScript: async, await, обработка ошибок через try...catch, последовательное и параллельное ожидание.