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
Už 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.