Focus mode

Node.js

Olay Odaklı - Bloklamayan

Olay Odaklı ve Bloklamayan


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


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


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.



Daha Fazlası İçin




Patika Plus Banner

Yazılım Kariyerinde İlerlemeni Hızlandıracak Eğitimler

Kendi kendine yazılım öğrenirken zorlanıyor, takıldığın noktalarda bir mentore mi ihtiyaç duyuyorsun? Patika+ programlarımız ile 4-8 aylık yoğun eğitim kamplarına katıl, proje tabanlı canlı dersler ve sana özel hazırlanmış eğitimlerle gereken tüm yetenekleri kazan, iş hayatına başla!

Comments

You need to enroll in the course to be able to comment!