PassFront
  1. PassFront
  2. База знаний
  3. Асинхронность и Event Loop

Зачем нужно ключевое слово async перед функцией?

Асинхронность и Event Loop

Ключевое слово `async` делает функцию асинхронной: она всегда возвращает промис, а внутри неё можно использовать await.

Что происходит с результатом

async function getNumber() {
  return 42;
}

getNumber().then(console.log); // 42 — значение обёрнуто в промис

Возвращаемое значение превращается в выполненный промис, а брошенная ошибка — в отклонённый:

async function fail() {
  throw new Error('boom');
}
fail().catch(e => console.log(e.message)); // boom

await

Внутри async-функции await приостанавливает выполнение функции до завершения промиса, не блокируя поток:

async function load() {
  const res = await fetch('/api/user');
  return res.json();
}

Без async слово await допустимо только в модуле на верхнем уровне.

Ошибки

Отклонённые промисы обрабатывают через try/catch:

try {
  await load();
} catch (e) {
  console.error(e);
}

Нюансы

  • Стрелочные функции тоже бывают асинхронными: const f = async () => {}.
  • Несколько независимых запросов выполняют параллельно через Promise.all, а не цепочкой await.

Коротко для собеседования

async превращает функцию в возвращающую промис и разрешает await внутри неё. Это синтаксис поверх промисов: результат оборачивается в промис, исключение становится отклонением.

Другие вопросы раздела