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.