Middle
De ce a fost introdusă construcția async/await și cum îmbunătățește aceasta lucrul cu codul asincron?
sobes.tech AI
Răspuns de la AI
Async/await a fost introdus pentru a simplifica scrierea codului asincron, făcându-l mai ușor de citit și de întreținut în comparație cu callback-urile sau promisiunile tradiționale.
Cum îmbunătățește:
- Citibilitate: Codul cu
async/awaitarată ca și codul sincron, linie cu linie, ceea ce îl face mult mai ușor de înțeles. - Gestionarea erorilor: Permite utilizarea construcțiilor standard precum try/catch pentru gestionarea erorilor în codul asincron, spre deosebire de
.catch()în promisiuni. - Depanare: Punctele de întrerupere (breakpoints) funcționează la fel ca în codul sincron, facilitând procesul de depanare.
- Mai puțin "callback hell": Elimină problema callback-urilor încastrate, care duce la un cod greu de citit.
Exemplu:
Cod cu promisiuni:
// Exemplu cu promisiuni
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Eroare la preluarea datelor:', error);
});
Același cod cu async/await:
// Exemplu cu async/await
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Eroare la preluarea datelor:', error);
}
}
fetchData();
Construcția async/await se bazează pe promisiuni și este un zahăr sintactic pentru lucrul cu acestea. Funcția marcată ca async returnează întotdeauna o promisiune. Operatorul await poate fi folosit doar în interiorul funcțiilor async și "așteaptă" rezolvarea promisiunii, returnând valoarea sa rezolvată sau generând o excepție în caz de eroare.