Sobes.tech
Junior

Papaskink apie async/await konstrukciją JavaScript.

sobes.tech AI

Atsakymas iš AI

async/await – tai sintaksės cukrus, viršijantis pažadus, skirtas paprastesniam asinchroninio kodo rašymui, kuris atrodo kaip sinchroninis.

Funkcija, pažymėta žodžiu async, visada grąžina pažadą. async funkcijos viduje galima naudoti žodį await.

Operatorius await naudojamas prieš pažado iškvietimą. Jis sustabdo async funkcijos vykdymą tol, kol pažadas nebus įvykdytas (resolved) arba atmestas (rejected). Pažado vykdymo rezultatas (sėkmės reikšmė arba klaida) grąžinamas await operatoriaus.

Jei pažadas, prieš kurį yra await, atmestas, tai sukelia išimtį, kurią galima sugauti naudojant try...catch bloką.

// `async/await` naudojimo pavyzdys
async function fetchData() {
  try {
    // Laukiame asinchroninės operacijos įvykdymo (pvz., API užklausos)
    const response = await fetch('https://api.example.com/data');
    // Atsakymo išparsinimas į JSON
    const data = await response.json();
    // Gauto duomenų išvedimas
    console.log(data);
  } catch (error) {
    // Sugauti galimą klaidą
    console.error('Klaida gaunant duomenis:', error);
  }
}

// Kvieskite `async` funkciją
fetchData();

// `async` funkcija, grąžinanti pažadą
async function getValue() {
  return 10; // Tai automatiškai apvyniojama į Promise.resolve(10)
}

getValue().then(value => console.log(value)); // Išves 10

async/await privalumai:

  • Kodo skaitomumas: Asinchroninis kodas tampa panašesnis į sinchroninį
  • Klaidų apdorojimas: Patogiau naudoti standartinius try...catch blokus.
  • Mažiau įdėjimo: Vengia "kailių kolbų" arba ilgos .then() grandinės.

Reikia prisiminti, kad await galima naudoti tik async funkcijose.