Sobes.tech
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:

  1. Citibilitate: Codul cu async/await arată ca și codul sincron, linie cu linie, ceea ce îl face mult mai ușor de înțeles.
  2. Gestionarea erorilor: Permite utilizarea construcțiilor standard precum try/catch pentru gestionarea erorilor în codul asincron, spre deosebire de .catch() în promisiuni.
  3. Depanare: Punctele de întrerupere (breakpoints) funcționează la fel ca în codul sincron, facilitând procesul de depanare.
  4. 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.