В чем разница между then и async/await

«В чем разница между then и async/await» — вопрос из категории Асинхронность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

then и async/await — оба подхода для работы с промисами, но с разным синтаксисом.

then — цепочка методов для обработки асинхронных операций:

fetch(url)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

async/await — синтаксический сахар над промисами, делает код более линейным:

async function fetchData() {
  try {
    const response = await fetch(url);
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

Различия:

  • async/await упрощает чтение кода, избегая вложенных then.
  • Ошибки в async/await ловятся через try/catch, а в then — через .catch().
  • async/await требует обертки в async-функцию, тогда как then можно использовать напрямую.

Выбор зависит от стиля, но async/await часто предпочтительнее для сложных сценариев.