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();