Sobes.tech
Junior

Каква е разликата между async/await и Promise?

sobes.tech AI

Отговор от AI

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

Особеност 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();