Sobes.tech
Middle

Zašto je uvedena konstrukcija async/await i kako ona poboljšava rad sa asinhronim kodom?

sobes.tech АИ

Одговор од АИ

Async/await je uveden da pojednostavi pisanje asinhronog koda, čineći ga čitljivijim i lakšim za održavanje u poređenju sa tradicionalnim callback-ovima ili promise-ima.

Kako poboljšava:

  1. Čitljivost: Kod sa async/await izgleda kao sinhroni, red po red, što znatno olakšava razumevanje.
  2. Obrada grešaka: Omogućava korišćenje standardnih konstrukcija kao što su try/catch za obradu grešaka u asinhronom kodu, za razliku od .catch() u promise-ima.
  3. Debagovanje: Tačke prekida (breakpoints) rade isto kao i u sinhronom kodu, olakšavajući proces debagovanja.
  4. Manje "callback hell": Uklanja problem ugnježdenih callback-ova, što dovodi do nečitljivog koda.

Primer:

Kod sa promise-ima:

// Primer sa promise-ima
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Greška pri dobijanju podataka:', error);
  });

Isti kod sa async/await:

// Primer sa 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('Greška pri dobijanju podataka:', error);
  }
}

fetchData();

Konstrukcija async/await zasnovana je na promise-ima i predstavlja sintaktički šećer za rad sa njima. Funkcija označena kao async uvek vraća promise. Operator await može biti korišćen samo unutar async funkcija i "čeka" na rešavanje promise-a, vraćajući njegovu rešenu vrednost ili bacajući izuzetak u slučaju greške.