Sobes.tech
Middle

Kāpēc tika ieviesta konstrukcija async/await un kā tā uzlabo darbu ar asīnhrono kodu?

sobes.tech AI

Atbilde no AI

Async/await tika ieviests, lai vienkāršotu asinhrono kodu, padarot to lasāmāku un uzturējamāku salīdzinājumā ar tradicionālajām atgriezeniskajām saistībām vai solījumiem.

Kā tas uzlabo:

  1. Lasāmība: Kods ar async/await izskatās kā sinhrons, rindas pēc rindas, kas ievērojami vienkāršo tā saprašanu.
  2. Kļūdu apstrāde: Atļauj izmantot standarta konstrukcijas try/catch, lai apstrādātu kļūdas asinhronajā kodā, atšķirībā no .catch() solījumiem.
  3. Atkļūdošana: Pārtraukšanas punkti (breakpoints) darbojas tāpat kā sinhronajā kodā, vienkāršojot atkļūdošanas procesu.
  4. Mazāk "callback hell": Novērš iekļauto atgriezenisko saistību problēmu, kas noved pie nesaprotama koda.

Piemērs:

Kods ar solījumiem:

// Piemērs ar solījumiem
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Kļūda, iegūstot datus:', error);
  });

Tas pats kods ar async/await:

// Piemērs ar 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('Kļūda, iegūstot datus:', error);
  }
}

fetchData();

Konstrukcija async/await ir uzbūvēta virs solījumiem un ir sintakses cukurs to darbam. Funkcija, kas atzīmēta ar async, vienmēr atgriež solījumu. Operators await var tikt izmantots tikai async funkcijas iekšpusē un tas "gaida" solījuma izpildi, atgriežot tā apstiprināto vērtību vai ģenerējot izņēmumu kļūdas gadījumā.