Async Await

Async/await — специальный синтаксис для работы с промисами, делающий асинхронный код похожим на синхронный.

Ключевое слово async

Когда async стоит перед функцией, она автоматически возвращает Promise, даже если возвращает обычное значение.

Ключевое слово await

Приостанавливает выполнение функции до разрешения промиса. Работает только внутри async функций.

const fetchUser = async (id) => {
  const response = await fetch('/api/users/' + id)
  const user = await response.json()
  return user
}

Обработка ошибок (try/catch)

async function loadData() {
  try {
    const response = await fetch('/api/data')
    if (!response.ok) {
      throw new Error('HTTP ошибка: ' + response.status)
    }
    const data = await response.json()
    return data
  } catch (error) {
    console.log(error)
  } finally {
    console.log('Запрос завершён')
  }
}

Параллельные запросы

// Последовательно (медленно)
const user  = await fetchUser(1)
const posts = await fetchPosts(1)

// Параллельно (быстро)
const [user, posts] = await Promise.all([
  fetchUser(1),
  fetchPosts(1)
])