Sobes.tech
Junior

Kokius būdus žinote dirbti su asinchroniniu kodu?

sobes.tech AI

Atsakymas iš AI

  • Callback funkcijos: funkcijos perdavimas kaip argumento kitai funkcijai, kuri bus iškviesta po asinchroninės operacijos pabaigos. Gali sukelti "callback hell".
  • Promises (Promisai): Objektai, kurie atstovauja galutinį asinchroninės operacijos užbaigimą (arba nesėkmę) ir jos rezultato reikšmę. Suteikia labiau struktūruotą asinchronumo valdymą.
    // Pavyzdys naudojant promisą
    fetch('/api/data')
      .then(response => response.json()) // Sėkmingo atsakymo apdorojimas
      .then(data => console.log(data)) // Gauto duomenų apdorojimas
      .catch(error => console.error('Klaida gaunant duomenis:', error)); // Klaidos apdorojimas
    
  • Async/await: Sintaksės cukrus virš promisų, leidžiantis rašyti asinchroninį kodą labiau sinchroniniu stiliumi, kas daro jį lengviau skaitomą ir lengviau derinamą.
    // Pavyzdys naudojant async/await
    async function fetchData() {
      try {
        const response = await fetch('/api/data'); // Laukiama promisės vykdymo
        if (!response.ok) {
          throw new Error(`HTTP klaida! statusas: ${response.status}`);
        }
        const data = await response.json(); // Laukiama promisės vykdymo
        console.log(data);
      } catch (error) {
        console.error('Klaida gaunant duomenis:', error); // Klaidos apdorojimas
      }
    }
    fetchData();
    
  • Generatoriai (Generators): Gali būti naudojami darbui su asinchroniškumu kartu su co biblioteka arba rankiniu būdu, nors async/await tapo labiau paplitęs požiūris.

Palyginimas pagrindinių požiūrių:

Būdas Privalumai Trūkumai
Callbacks Paprasta pradiniame etape "Callback hell", klaidų apdorojimo sudėtingumas
Promises Pagerinta skaitomumas, klaidų apdorojimas Gali būti didelės grandinėse operacijose
Async/await Aukštas skaitomumas, panašumas į sinchroninį kodą Reikalauja async/await palaikymo aplinkos