Назад к вопросам
Junior
119
questionbank

В чем разница между использованием Promise и Async/Await в коде?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Promise представляет собой объект, представляющий завершение или сбой асинхронной операции и её результирующее значение. Async/Await являются синтаксическим сахаром над Promise, делая асинхронный код более читаемым и похожим на синхронный.

Основные отличия:

Характеристика Promise Async/Await
Синтаксис Цепочки .then(), .catch(), .finally() Функции, помеченные async, перед await выражением
Читаемость Может быть менее читаемым при длинных цепочках Значительно повышает читаемость
Обработка ошибок Через .catch() Через блоки try...catch
Совместимость Стандартный способ работы с асинхронностью Требует поддержки синтаксиса (Node.js >= 7.6)

Пример с Promise:

// Пример асинхронной функции, возвращающей Promise
function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Данные успешно получены");
    }, 1000);
  });
}

fetchData()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error("Ошибка получения данных:", error);
  });

Пример с Async/Await:

// Пример асинхронной функции, помеченной async
async function fetchDataAsync() {
  // await ожидает завершения Promise
  const data = await fetchData();
  console.log(data);
}

async function processData() {
  try {
    // Вызов асинхронной функции и обработка ошибок через try...catch
    await fetchDataAsync();
  } catch (error) {
    console.error("Ошибка в процессе обработки:", error);
  }
}

processData();

В конечном итоге, Async/Await не заменяет Promise, а использует их под капотом для упрощения написания асинхронного кода. Выбор между ними часто зависит от предпочтений разработчика и сложности логики. В большинстве случаев Async/Await предпочтительнее из-за своей читаемости.