Sobes.tech
Junior
252
questionbank

В чем заключается разница между async/await и Promise?

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

sobes.tech AI

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

Особенность async/await Promise
Синтаксис Более похож на синхронный код. Использует методы .then(), .catch(), .finally().
Читаемость Зачастую более высокая, особенно при цепочках. Может привести к "Callback hell" при сложных цепочках.
Обработка ошибок Использует стандартный try...catch. Использует .catch() или второй аргумент в .then().
Параллелизм Требует явного использования Promise.all() или Promise.allSettled(). Может быть более явным, но менее читаемым без async/await.
// Пример с Promise
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Данные получены');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// Пример с async/await
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Данные получены');
    }, 1000);
  });
}

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

processData();