Sobes.tech
Junior

Pastāsti par async/await konstrukciju JavaScript.

sobes.tech AI

Atbilde no AI

async/await – tas ir sintakses cukurs virs promisa, paredzēts vienkāršākam asinhronā koda rakstīšanai, kas izskatās kā sinhronais.

Funkcija, kas ir atzīmēta ar vārdu async, vienmēr atgriež promisu. async funkcijas iekšpusē var izmantot vārdu await.

Operators await tiek izmantots pirms promisa izsaukuma. Tas pārtrauc async funkcijas izpildi līdz brīdim, kad promiss tiks izpildīts (resolved) vai noraidīts (rejected). Promisa izpildes rezultāts (panākuma vērtība vai kļūda) tiek atgriezts ar await operatoru.

Ja promiss, kam priekšā ir await, tiek noraidīts, tas izraisa izņēmumu, ko var noķert ar try...catch bloku.

// `async/await` piemērs
async function fetchData() {
  try {
    // Gaidām asinhronas operācijas pabeigšanu (piemēram, API pieprasījumu)
    const response = await fetch('https://api.example.com/data');
    // Atbildes parsēšana uz JSON
    const data = await response.json();
    // Iegūto datu izvadīšana
    console.log(data);
  } catch (error) {
    // Noķeram iespējamās kļūdas
    console.error('Kļūda, saņemot datus:', error);
  }
}

// Izsaucam `async` funkciju
fetchData();

// `async` funkcija, kas atgriež promisu
async function getValue() {
  return 10; // Tas automātiski ietverts `Promise.resolve(10)`
}

getValue().then(value => console.log(value)); // Izvadīs 10

async/await priekšrocības:

  • Koda lasāmība: Asinhronais kods kļūst līdzīgāks sinhronajam
  • Kļūdu apstrāde: Ir ērtāk izmantot standarta try...catch blokus.
  • Mazāk līmeņu: Izvairās no "kāpu līnijas" vai garām .then() ķēdēm.

Jāatceras, ka await var izmantot tikai async funkcijās.