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