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

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

Sobes Copilot

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

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

sobes.tech AI

Promise представляет собой объект, который отражает конечное завершение или отказ асинхронной операции. Он управляет асинхронными потоками с помощью колбеков .then() и .catch().

async/await - это синтаксический сахар над Promise, который делает асинхронный код более читаемым и похожим на синхронный. Функция, помеченная как async, всегда возвращает Promise. Оператор await можно использовать только внутри async функции и он приостанавливает выполнение функции до тех пор, пока Promise не будет выполнен или отклонен, после чего возвращает его результат или генерирует исключение.

Аспект Promise Async/Await
Читаемость Требует цепочек .then() и .catch() Похож на синхронный код, линейный поток
Обработка ошибок Использует .catch() Использует блоки try...catch
Поток выполнения Управляется колбеками Приостанавливает/возобновляет функцию
Возвращаемое значение Promise Promise (для async функции) или результат Promise (для await)
Зависимость Самостоятельный механизм Построен на основе Promise

Пример с Promise:

// Пример с Promise
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Данные получены (Promise)");
    }, 1000);
  });
}

fetchDataPromise()
  .then(data => console.log(data))
  .catch(error => console.error(error));

Пример с async/await:

// Пример с async/await
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Данные получены (async/await)");
    }, 1000);
  });
}

async function showData() {
  try {
    const data = await fetchDataAsync();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

showData();