Sobes.tech
Junior

Ce metode de lucru cu codul asincron cunoașteți?

sobes.tech AI

Răspuns de la AI

  • Funcții callback: Transmiterea unei funcții ca argument către o altă funcție, care va fi apelată după finalizarea unei operații asincrone. Pot duce la "callback hell".
  • Promisiuni (Promises): Obiecte care reprezintă finalizarea (sau eșecul) unei operații asincrone și valoarea sa rezultată. Oferă o gestionare mai structurată a asincronicității.
    // Exemplu de utilizare a promisiunii
    fetch('/api/data')
      .then(response => response.json()) // Procesarea răspunsului de succes
      .then(data => console.log(data)) // Procesarea datelor primite
      .catch(error => console.error('Eroare la preluarea datelor:', error)); // Tratarea erorii
    
  • Async/await: Zahăr sintactic peste promisiuni, care permite scrierea codului asincron într-un stil mai sincron, făcându-l mai ușor de citit și de depanat.
    // Exemplu de utilizare async/await
    async function fetchData() {
      try {
        const response = await fetch('/api/data'); // Așteptarea promisiunii
        if (!response.ok) {
          throw new Error(`Eroare HTTP! status: ${response.status}`);
        }
        const data = await response.json(); // Așteptarea promisiunii
        console.log(data);
      } catch (error) {
        console.error('Eroare la preluarea datelor:', error); // Tratarea erorii
      }
    }
    fetchData();
    
  • Generatori: Pot fi folosiți pentru a lucra cu asincronia în combinație cu biblioteca co sau manual, deși async/await a devenit o abordare mai răspândită.

Compararea principalelor abordări:

Metodă Avantaje Dezavantaje
Callbacks Simplu la început "Callback hell", complexitate în gestionarea erorilor
Promises Mai bună lizibilitate, gestionarea erorilor Pot fi voluminoase în lanțuri de operații
Async/await Înaltă lizibilitate, asemănare cu codul sincron Necesită suport de mediu pentru async/await