Node.js uygulamalarını geliştirme sürecinde, olay işleme ve eşzamansız işlemeyi anlamak ve bunlarla çalışmak çok önemlidir. Node.js, olay güdümlü ve eşzamansız bir model üzerine kuruludur ve görevlerin tamamlanmasını beklemeden yürütülmesine olanak tanır. Aslında, olay işleme ve eşzamansız işlemeyi anlamak ve doğru bir şekilde uygulamak, uygulama performansını optimize etmenin önemli bir parçasıdır.
Node.js'de olaylar ve geri aramalar
Node.js'de olaylar ve geri aramalar, eşzamansız işlemlerin yürütülmesinde çok önemli bir rol oynar. Olaylar, bir uygulama içinde meydana gelen belirli eylemleri veya oluşumları ele almanın ve bunlara yanıt vermenin bir yoludur. Öte yandan geri aramalar, belirli bir olay veya işlem tamamlandıktan sonra yürütülen işlevlerdir.
Node.js, uygulamanın farklı bölümlerinin olayları yayabileceği ve dinleyebileceği olay odaklı bir mimari sağlar. Bu, aynı anda birden fazla işlemin verimli ve engelleyici olmayan bir şekilde işlenmesine izin verir.
Geri aramalar, zaman uyumsuz işlemleri işlemek için Node.js'de yaygın olarak kullanılır. İşlevlere argüman olarak iletilirler ve işlem tamamlandıktan sonra yürütülürler. Geri aramalar, zaman uyumsuz görevler sırasında ortaya çıkan sonuçları veya hataları işlemek için bir yol sağlar.
İşte Node.js'de geri arama kullanmanın bir örneği:
// 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);
}
});
fetchDataBu örnekte, eşzamansız bir işlemden veri getirmeyi simüle eden (örneğin, bir API çağrısı yapmak veya bir veritabanını sorgulamak) adlı bir işleve sahibiz . Argüman olarak bir geri arama işlevi alır.
İşlevin içinde , eşzamansız işlemi simüle etmek için fetchDatakullanıyoruz . 2 saniyelik gecikmeden sonra, bazı örnek veriler oluşturuyoruz ve bunu bir hatayla birlikte ( bu durumda setTimeoutolarak ayarlanmış) geri arama işlevine iletiyoruz .null
Fonksiyonun dışında fetchDataonu çağırırız ve bir geri arama fonksiyonu sağlarız. Geri aramada olası hataları ele alır ve alınan verileri işleriz. Bir hata varsa, onu konsola kaydederiz. Aksi takdirde, verileri günlüğe kaydederiz.
Bu, eşzamansız işlemleri işlemek ve verilerin kullanılabilir olduğunda işlenmesini sağlamak için Node.js'de bir geri arama kullanmanın temel bir örneğidir. Gerçek dünya senaryolarında, geri aramalar genellikle veritabanı sorgularını, API isteklerini ve diğer eşzamansız görevleri işlemek için kullanılır.
Eşzamansızlığı işlemek için Promises ve async/await kullanma
"Eşzamansız işlemleri işlemek için Promise ve async/await kullanma", eşzamansız görevleri kolay ve verimli bir şekilde işlemek için Node.js'de yaygın bir yaklaşımdır. Promise, eşzamansız işlemleri yönetmemize ve işlememize yardımcı olan bir JavaScript nesnesidir, async/await ise eşzamansız koda benzer şekilde eşzamansız kod yazmamıza izin veren bir sözdizimidir.
Promise ve async/await kullanarak asenkron kodu daha kolay ve sezgisel olarak yazabiliriz. Asenkron işlemleri halletmek için artık geri arama işlevlerini kullanmamıza ve geri arama cehennemi (iç içe geri arama işlevleri) ile uğraşmamıza gerek yok. Bunun yerine, bir Sözün tamamlanmasını beklemek ve sonucunu döndürmek için wait anahtar sözcüğünü kullanabiliriz.
Eşzamansız işlemleri işlemek için Node.js'de Promise ve async/await kullanımına bir örnek:
// 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();
Bu örnekte, fetchDatabir API'den (veya herhangi bir eşzamansız işlemden) veri getirmeyi simüle etmek için işlevi kullanıyoruz. resolveBu işlev, verileri döndürmek için işlevi çağırdığımız bir Promise döndürür .
Fonksiyonun dışında , hataları işlemek için fetchDatabir blok kullanırız . try/catchFonksiyonda , Sözün veriyi tamamlamasını ve döndürmesini beklemek için anahtar kelimeyi getDatakullanırız . awaitSözde bir hata varsa, bir istisna atar ve bunu blokta hallederiz catch.
getDataSon olarak, eşzamansız işlemeyi başlatmak için işlevi çağırıyoruz . Sonuç, Promise tamamlandıktan ve verileri döndürdükten sonra konsola kaydedilecektir.
Promise ve async/await kullanmak, zaman uyumsuz işlemlerle uğraşırken kodumuzu daha okunabilir ve anlaşılmasını kolaylaştırır. Geri arama cehenneminden kaçınmamıza yardımcı olur ve eşzamanlı kod yazmaya benzer şekilde sıralı bir şekilde kod yazmamıza izin verir.
Sonuç: Olay işleme ve eşzamansız işleme, Node.js uygulamalarının geliştirilmesinde iki önemli unsurdur. İlgili kavramları ve araçları anlayarak ve doğru şekilde kullanarak Node.js platformunda verimli, esnek ve güvenilir uygulamalar oluşturabilirsiniz.