Sobes.tech
Junior

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

sobes.tech AI

Отговор от AI

Promise представлява обект, който отразява крайното завършване или отказ на асинхронна операция. Той управлява асинхронните потоци чрез callbacks .then() и .catch().

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

Аспект Promise Async/Await
Четивност Изисква вериги .then() и .catch() Похож на синхронен код, линейна поток
Обработка на грешки Използва .catch() Използва блокове try...catch
Поток на изпълнение Управлява се от callback-и Спира/възобновява функцията
Връщана стойност 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();