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

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

Ответ

async/await и finally решают разные задачи в асинхронном коде:

  1. async/await — синтаксис для работы с промисами, делает асинхронный код похожим на синхронный:
async function fetchData() {
  try {
    const data = await fetch('url');
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}
  1. finally — блок в try/catch, который выполнится в любом случае (после успеха или ошибки):
async function fetchData() {
  try {
    const data = await fetch('url');
  } catch (error) {
    console.error(error);
  } finally {
    console.log('Завершено'); // Выполнится всегда
  }
}

Ключевые отличия:

  • async/await управляет потоком асинхронных операций
  • finally гарантирует выполнение кода после try/catch, независимо от результата