Focus mode
Node.js'in şimdiye kadar 2 temel özelliğini paylaştık. Node.js bir Javascript çalışma ortamıdır ve asenkron olarak çalışır. Bu bölümde ise Node.js'in olay temelli çalışma yapısı üzerine konuşacağız ve bu olay temelli çalışma birbirleribi bloklamadan (engellemeden) çalışır.
Event Driven Olay Temelli yaklaşımda programın akışını olaylar belirler, olay döngüsü içerisinde tamamlanan işlemler Callback vasıtasıyla işlemin tamamlandığını bildirir. Burada şu dikkatinizi çekmiştir, bazı kavramları tekrar ediyoruz, bunun nedeni kavramların sizin de gördüğünüz gibi birbirleriyle ilişkili olmasıdır.
Non-Blocking Bloklamayan bir yazılımda kodun bir parçasının çalışması durumunda kodun diğer bölümünün çalışmaması durumudur. Biraz daha iyi anlamak için hemen bir örnek verelim. Aşağıdaki örneğimizide kodun devamının çalışması için file.md dosyasının okunmasının bitmesi zorunludur ve bu okuma işlemi sırasında kodun ileri aşamaları bloklanır.
const fs = require('fs'); // fs modülünü çağırıyoruz (İleride daha detalı konuşacağız.)
const data = fs.readFileSync('/file.md'); // Burada kod senkron çalışarak sonraki kodları blokluyor.
console.log(data); // data bilgisini yazdırıyoruz
moreWork(); // devamında çalışacak kod
Aşağıdaki örneğimizide kodun devamının çalışması için file.md dosyasının okunmasının bitmesi zorunlu değildir. readFile asenkron olarak çalışır ve bu nedenle kodun bu bölümü tamamlanmadan diğer bölümler çalışabilir. Kodun ilerleyen bölümü daha önce çalışır.
const fs = require('fs'); // fs modülünü çağırıyoruz (İleride daha detalı konuşacağız.)
fs.readFile('/file.md', (err, data) => { // Burada kod asenkron çalışır ve devamındaki kodu **bloklamaz**if (err) throw err;
console.log(data); // data bilgisini yazdırıyoruz
});
moreWork(); // kod bloklanmadığı için kodun bu kısmı data bilgisi yazdırmaktan önce çalışır.
Aşağıdaki grafikte senkron çalışmanın kodları bloklarken asenkron çalışmanın kodları bloklamadan çalıştığını göstermektedir. Senkron çalışmada "user1" beklenip sonra ona ait print işlemi yapılmakta iken asenkron açlışma grafiğinde "user1" den gelen cevap beklenmeden "user2" bilgisi istenmektedir.
Programs to Accelerate Your Progress in a Software Career
Join our 4-8 month intensive Patika+ bootcamps, start with the fundamentals and gain comprehensive knowledge to kickstart your software career!
You need to enroll in the course to be able to comment!