Rukovanje događajima i asinkroničnost u Node.js

U procesu razvoja Node.js aplikacija ključno je razumijevanje i rad s rukovanjem događajima i asinkronom obradom. Node.js izgrađen je na asinkronom modelu vođenom događajima, koji omogućuje izvršavanje zadataka bez čekanja na završetak. Zapravo, razumijevanje i ispravna primjena rukovanja događajima i asinkrone obrade bitan je dio optimizacije izvedbe aplikacije.

 

Događaji i callback s u Node.js

U Node.js događaji i callback s igraju ključnu ulogu u rukovanju asinkronim operacijama. Događaji su način rukovanja i odgovora na određene radnje ili događaje koji se događaju unutar aplikacije. Callback S, s druge strane, su funkcije koje se izvršavaju kada se završi određeni događaj ili operacija.

Node.js pruža arhitekturu vođenu događajima gdje različiti dijelovi aplikacije mogu emitirati događaje i slušati ih. To omogućuje učinkovitu i neblokirajuću obradu više operacija istovremeno.

Callback s se obično koriste u Node.js za rukovanje asinkronim operacijama. Oni se prosljeđuju kao argumenti funkcijama i izvršavaju se nakon završetka operacije. Callback s pružaju način za rukovanje rezultatima ili pogreškama koje se javljaju tijekom asinkronih zadataka.

Evo primjera korištenja callback u 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);  
  }  
});  

U ovom primjeru imamo funkciju pod nazivom fetchData koja simulira dohvaćanje podataka iz asinkrone operacije(npr. upućivanje API poziva ili postavljanje upita bazi podataka). Uzima callback funkciju kao argument.

Unutar fetchData funkcije koristimo se setTimeout za simulaciju asinkrone operacije. Nakon odgode od 2 sekunde stvaramo neke ogledne podatke i prosljeđujemo ih funkciji callback zajedno s pogreškom(koja je null u ovom slučaju postavljena na).

Izvan fetchData funkcije, mi je pozivamo i pružamo callback funkciju. U callback, rješavamo sve moguće pogreške i obrađujemo primljene podatke. Ako postoji greška, bilježimo je u konzolu. U suprotnom, bilježimo podatke.

Ovo je osnovni primjer korištenja callback u Node.js za rukovanje asinkronim operacijama i osiguravanje obrade podataka nakon što postanu dostupni. U scenarijima stvarnog svijeta, callback s se obično koriste za rukovanje upitima baze podataka, API zahtjevima i drugim asinkronim zadacima.

 

Korištenje Promise s i za rukovanje asinkroničnosti async/await

"Korištenje Promise i rukovanje asinkronim operacijama" uobičajeni je pristup u Node.js za rukovanje asinkronim zadacima na jednostavan i učinkovit način. je objekt koji nam pomaže upravljati i rukovati asinkronim operacijama, dok je sintaksa koja nam omogućuje pisanje asinkronog koda na sličan način kao sinkroni kod. async/await Promise JavaScript async/await

Korištenjem Promise i možemo lakše i intuitivnije pisati asinkroni kod. Više ne moramo koristiti funkcije i baviti se paklom(ugniježđene funkcije) za rukovanje asinkronim operacijama. Umjesto toga, možemo upotrijebiti ključnu riječ await da pričekamo da se dovrši i vrati njegov rezultat. async/await callback callback callback Promise

Evo primjera korištenja Promise i u Node.js za rukovanje asinkronim operacijama: 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();  

U ovom primjeru koristimo fetchData funkciju za simulaciju dohvaćanja podataka iz API-ja(ili bilo koje asinkrone operacije). Ova funkcija vraća Promise, gdje pozivamo resolve funkciju da vrati podatke.

Izvan funkcije fetchData, koristimo try/catch blok za obradu pogrešaka. U getData funkciji koristimo await ključnu riječ za čekanje da Promise završi i vrati podatke. Ako postoji pogreška u Promise, izbacit će iznimku i mi to rješavamo u catch bloku.

Konačno, pozivamo getData funkciju za početak asinkrone obrade. Rezultat će biti zapisan u konzolu nakon Promise dovršetka i vraćanja podataka.

Korištenje Promise i čini naš kod čitljivijim i lakšim za razumijevanje kada se radi o asinkronim operacijama. Pomaže nam da izbjegnemo pakao i omogućuje nam pisanje koda na sekvencijalan način, slično pisanju sinkronog koda. async/await callback

 

Zaključak: rukovanje događajima i asinkrona obrada dva su ključna aspekta u razvoju Node.js aplikacija. Razumijevanjem i ispravnim korištenjem povezanih koncepata i alata, možete izgraditi učinkovite, fleksibilne i pouzdane aplikacije na Node.js platformi.