Sobes.tech
Junior

Care este diferența dintre utilizarea Promise și sintaxa async/await?

sobes.tech AI

Răspuns de la AI

Promise reprezintă un obiect care reflectă finalizarea sau respingerea unei operațiuni asincrone. Gestionează fluxurile asincrone folosind callback-uri .then() și .catch().

async/await este un zahăr sintactic peste Promise, care face ca codul asincron să fie mai ușor de citit și asemănător cu cel sincron. O funcție marcată ca async returnează întotdeauna un Promise. Operatorul await poate fi folosit doar în interiorul funcțiilor async și întrerupe execuția funcției până când Promise-ul este rezolvat sau respins, apoi returnează rezultatul sau generează o excepție.

Aspect Promise Async/Await
Lizibilitate Necesită lanțuri .then() și .catch() Semănă cu codul sincron, flux liniar
Tratarea erorilor Folosește .catch() Folosește blocuri try...catch
Fluxul de execuție Gestionat de callback-uri Pune în pauză/reia funcția
Valoarea returnată Promise Promise (pentru funcții async) sau rezultatul Promise (pentru await)
Dependență Mecanism independent Bazat pe Promise

Exemplu cu Promise:

// Exemplu cu Promise
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Datele au fost primite (Promise)");
    }, 1000);
  });
}

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

Exemplu cu async/await:

// Exemplu cu async/await
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Datele au fost primite (async/await)");
    }, 1000);
  });
}

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

showData();