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