Įvykių ir asinchroniškumo tvarkymas Node.js

Kuriant Node.js programas labai svarbu suprasti ir dirbti su įvykių tvarkymu bei asinchroniniu apdorojimu. Node.js sukurtas remiantis įvykiais pagrįstu ir asinchroniniu modeliu, leidžiančiu atlikti užduotis nelaukiant, kol jos bus baigtos. Tiesą sakant, įvykių tvarkymo ir asinchroninio apdorojimo supratimas ir teisingas taikymas yra esminė programos našumo optimizavimo dalis.

 

Įvykiai ir callback s Node.js

„Node.js“ įvykiai ir callback s atlieka lemiamą vaidmenį tvarkant asinchronines operacijas. Įvykiai yra būdas tvarkyti ir reaguoti į tam tikrus veiksmus ar įvykius, vykstančius programoje. Callback Kita vertus, s yra funkcijos, kurios vykdomos pasibaigus tam tikram įvykiui ar operacijai.

Node.js suteikia įvykiais pagrįstą architektūrą, kurioje įvairios programos dalys gali skleisti įvykius ir klausytis jų. Tai leidžia efektyviai ir neblokuojančiai apdoroti kelias operacijas vienu metu.

Callback s dažniausiai naudojami Node.js asinchroninėms operacijoms atlikti. Jie perduodami kaip argumentai funkcijoms ir vykdomi, kai operacija baigta. Callback s suteikia būdą tvarkyti rezultatus arba klaidas, atsirandančias atliekant asinchronines užduotis.

Štai pavyzdys, kaip naudoti callback Node.js:

// A function that takes a callback
function fetchData(callback) {  
  // Simulate fetching data from an asynchronous operation  
  setTimeout(() => {  
    const data = { name: 'John', age: 30 };  
    callback(null, data); // Pass the data to the callback  
  }, 2000); // Simulate a 2-second delay  
}  
  
// Call the fetchData function and provide a callback  
fetchData((error, data) => {  
  if(error) {  
    console.error('Error:', error);  
  } else {  
    console.log('Data:', data);  
  }  
});  

Šiame pavyzdyje turime funkciją fetchData, kuri imituoja duomenų gavimą iš asinchroninės operacijos(pvz., API skambučio arba duomenų bazės užklausos). Tai atlieka callback funkciją kaip argumentą.

Funkcijos viduje mes fetchData naudojame setTimeout asinchroninei operacijai imituoti. Po 2 sekundžių delsos sukuriame kai kuriuos pavyzdinius duomenis ir perduodame juos funkcijai kartu su klaida(kuri šiuo atveju callback nustatyta). null

fetchData funkcijos ribų mes ją vadiname ir suteikiame funkciją callback. Naudojame callback visas galimas klaidas ir apdorojame gautus duomenis. Jei įvyksta klaida, ją įrašome į konsolę. Kitu atveju duomenis registruojame.

Tai yra pagrindinis pavyzdys, kaip naudoti callback Node.js asinchroninėms operacijoms atlikti ir užtikrinti, kad duomenys būtų apdoroti, kai tik jie bus pasiekiami. Realaus pasaulio scenarijuose callback s dažniausiai naudojami duomenų bazių užklausoms, API užklausoms ir kitoms asinchroninėms užduotims tvarkyti.

 

Naudojant Promise s ir tvarkyti asinchroniškumą async/await

„Asinchroninių operacijų naudojimas Promise ir tvarkymas“ yra įprastas „Node.js“ metodas, leidžiantis lengvai ir efektyviai atlikti asinchronines užduotis. yra objektas, kuris padeda mums valdyti ir tvarkyti asinchronines operacijas, o yra sintaksė, leidžianti rašyti asinchroninį kodą panašiai kaip sinchroninis kodas. async/await Promise JavaScript async/await

Naudodami Promise ir, galime lengviau ir intuityviau rašyti asinchroninį kodą. Mums nebereikia naudoti funkcijų ir dirbti su pragaru(įdėtomis funkcijomis), kad galėtume atlikti asinchronines operacijas. Vietoj to galime naudoti laukimo raktinį žodį, kad palauktume, kol a užbaigs ir grąžinsime rezultatą. async/await callback callback callback Promise

Štai pavyzdys, kaip naudoti Promise ir Node.js asinchroninėms operacijoms tvarkyti: async/await

// A mock function to fetch data from an API  
function fetchData() {  
  return new Promise((resolve, reject) => {  
    setTimeout(() => {  
      const data = { name: 'John', age: 30 };  
      resolve(data); // Return data within the Promise  
    }, 2000);  
  });  
}  
  
// Using async/await to handle asynchronous operations  
async function getData() {  
  try {  
    const data = await fetchData(); // Wait for the Promise to complete and return the data  
    console.log('Data:', data);  
  } catch(error) {  
    console.error('Error:', error);  
  }  
}  
  
// Call the getData function  
getData();  

Šiame pavyzdyje funkciją naudojame fetchData duomenų gavimui iš API(arba bet kokios asinchroninės operacijos) modeliuoti. Ši funkcija grąžina Promise, kur mes iškviečiame resolve funkciją, kad grąžintume duomenis.

Už funkcijos ribų klaidoms tvarkyti fetchData naudojame bloką. try/catch Funkcijoje getData naudojame await raktinį žodį, norėdami laukti, kol Promise bus baigtas ir grąžinti duomenis. Jei įvyksta klaida Promise, ji padarys išimtį ir mes ją apdorosime bloke catch.

Galiausiai iškviečiame getData funkciją, kad pradėtume asinchroninį apdorojimą. Rezultatas bus įrašytas į konsolę, kai baigsis Promise ir grąžins duomenis.

Naudojant asinchronines operacijas, mūsų kodas Promise tampa lengviau skaitomas ir suprantamas. Tai padeda mums išvengti pragaro ir leidžia mums rašyti kodą nuosekliai, panašiai kaip rašant sinchroninį kodą. async/await callback

 

Išvada: Įvykių tvarkymas ir asinchroninis apdorojimas yra du esminiai aspektai kuriant Node.js programas. Suprasdami ir teisingai naudodami susijusias sąvokas bei įrankius, galite kurti efektyvias, lanksčias ir patikimas programas Node.js platformoje.