Sobes.tech
Junior

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

sobes.tech AI

Răspuns de la AI

async/await este un zahăr sintactic peste promisiuni. Permite scrierea codului asincron într-un stil mai lizibil și asemănător cu cel sincron, folosind cuvintele cheie async pentru funcții care conțin await pentru a aștepta rezolvarea unei promisiuni. Promisiunile sunt obiecte care reprezintă finalizarea (sau eșecul) unei operații asincrone și valoarea sa rezultată.

Caracteristică async/await Promise
Sintaxă Mai asemănătoare cu codul sincron. Utilizează metodele .then(), .catch(), .finally().
Citibilitate În general mai ridicată, mai ales în lanțuri. Poate duce la "Callback hell" în lanțuri complexe.
Gestionarea erorilor Folosește try...catch standard. Folosește .catch() sau al doilea argument în .then().
Paralelism Necesită utilizarea explicită a Promise.all() sau Promise.allSettled(). Poate fi mai explicit, dar mai puțin lizibil fără async/await.
// Exemplu cu Promise
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Datele au fost primite');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// Exemplu cu async/await
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Datele au fost primite');
    }, 1000);
  });
}

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

processData();