Sobes.tech
Junior

Mi a különbség az async/await és a Promise között?

sobes.tech MI

Válasz az MI-től

Az async/await szintaktikus cukor a promise-ok felett. Lehetővé teszi az aszinkron kód olvashatóbb, szinkronhoz hasonló stílusban történő írását, az async kulcsszóval ellátott függvényekben, amelyekben az await segítségével várakozik a promise feloldására. A promise-ok olyan objektumok, amelyek egy aszinkron művelet végleges befejezését (vagy hibáját) és eredményét reprezentálják.

Jellemző async/await Promise
Szintaxis Inkább szinkron kódhoz hasonló. .then(), .catch(), .finally() metódusokat használ.
Olvashatóság Általában magasabb, különösen láncok esetén. Bonyolult láncoknál "Callback hell"-hez vezethet.
Hibakezelés A standard try...catch-t használja. .catch()-t vagy a .then() második argumentumát.
Párhuzamosság Egyértelmű Promise.all() vagy Promise.allSettled() használatát igényli. Lehet, hogy egyértelműbb, de kevésbé olvasható async/await nélkül.
// Promise példával
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Adatok megérkeztek');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// async/await példával
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Adatok megérkeztek');
    }, 1000);
  });
}

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

processData();