Вебсправочник
Справочник JavaScript

Promise и async/await: асинхронный результат

Как дождаться результата, обработать отказ и не путать ожидание с блокировкой всей страницы.

Основная идея

Promise представляет будущий результат операции: успешное значение или ошибку. Async-функция возвращает Promise. Внутри неё await приостанавливает продолжение этой функции до завершения ожидаемой операции, но не превращает ожидание в синхронную блокировку всего браузера.

Ошибку ожидаемого Promise можно обработать try/catch. Независимые операции иногда удобно запустить вместе и дождаться через Promise.all. Однако этот метод не отменяет остальные операции автоматически при отказе одной из них.

Пример JavaScript

async function getTitle() {
  return "HTML";
}
async function main() {
  try {
    const title = await getTitle();
    console.log(title);
  } catch (error) {
    console.error("Не удалось получить название");
  }
}
main();

Даже без сетевого запроса getTitle возвращает Promise благодаря async. Await получает его успешное значение.

Частая ошибка

Не забывайте обработать отказ на верхнем уровне. Сообщение в интерфейсе должно объяснять, что не получилось и можно ли повторить действие.

Самостоятельная проверка

Замените return на throw new Error в отдельном тесте. Убедитесь, что ошибка попала в catch и не была представлена как успешный результат.

Код здесь показан для изучения. Встроенная песочница сайта выполняет только HTML/CSS. JavaScript проверяйте в собственном учебном файле или консоли своего тестового проекта; не вставляйте непонятный код на страницах с личными данными.

Следующие темы: сетевые запросы, функции.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.