Node.js - Etkinlik Döngüsü

Node.js tek iş parçacıklı bir uygulamadır, ancak eşzamanlılığı event ve callbacks. Her Node.js API'si eşzamansızdır ve tek iş parçacıklıdır,async function callseşzamanlılığı korumak için. Düğüm, gözlemci modelini kullanır. Düğüm iş parçacığı bir olay döngüsünü saklar ve bir görev tamamlandığında, olay dinleyici işlevinin yürütülmesi için sinyal gönderen ilgili olayı tetikler.

Olay Odaklı Programlama

Node.js olayları yoğun bir şekilde kullanır ve aynı zamanda Node.js'nin diğer benzer teknolojilere kıyasla oldukça hızlı olmasının nedenlerinden biridir. Node, sunucusunu başlatır başlatmaz, basitçe değişkenlerini başlatır, işlevleri bildirir ve ardından olayın gerçekleşmesini bekler.

Olay güdümlü bir uygulamada, genellikle olayları dinleyen ve bu olaylardan biri algılandığında bir geri arama işlevini tetikleyen bir ana döngü vardır.

Olaylar geri çağırmalara oldukça benzer görünse de, aradaki fark geri çağırma fonksiyonlarının zaman uyumsuz bir fonksiyon sonucunu döndürdüğünde çağrılması, olay işleme ise gözlemci modelinde çalışmasında yatmaktadır. Olayları dinleyen işlevler,Observers. Bir olay tetiklendiğinde, dinleyici işlevi yürütülmeye başlar. Node.js, olayları ve olay dinleyicilerini aşağıdaki gibi bağlamak için kullanılan olay modülü ve EventEmitter sınıfı aracılığıyla kullanılabilen birden çok yerleşik olaya sahiptir -

// Import events module
var events = require('events');

// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

Bir olay işleyicisini bir olayla bağlamak için sözdizimi aşağıdadır -

// Bind event and event  handler as follows
eventEmitter.on('eventName', eventHandler);

Bir etkinliği programlı olarak aşağıdaki şekilde tetikleyebiliriz -

// Fire an event 
eventEmitter.emit('eventName');

Misal

Aşağıdaki kodla main.js adlı bir js dosyası oluşturun -

// Import events module
var events = require('events');

// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

// Create an event handler as follows
var connectHandler = function connected() {
   console.log('connection succesful.');
  
   // Fire the data_received event 
   eventEmitter.emit('data_received');
}

// Bind the connection event with the handler
eventEmitter.on('connection', connectHandler);
 
// Bind the data_received event with the anonymous function
eventEmitter.on('data_received', function() {
   console.log('data received succesfully.');
});

// Fire the connection event 
eventEmitter.emit('connection');

console.log("Program Ended.");

Şimdi yukarıdaki programı çalıştırmayı deneyelim ve çıktısını kontrol edelim -

$ node main.js

BT aşağıdaki sonucu üretmelidir -

connection successful.
data received successfully.
Program Ended.

Düğüm Uygulamaları Nasıl Çalışır?

Düğüm Uygulamasında, herhangi bir zaman uyumsuz işlev bir geri aramayı son parametre olarak kabul eder ve bir geri arama işlevi bir hatayı ilk parametre olarak kabul eder. Önceki örneğe tekrar dönelim. Aşağıdaki içeriğe sahip input.txt adlı bir metin dosyası oluşturun.

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Aşağıdaki koda sahip main.js adlı bir js dosyası oluşturun -

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
   if (err) {
      console.log(err.stack);
      return;
   }
   console.log(data.toString());
});
console.log("Program Ended");

Burada fs.readFile (), amacı bir dosyayı okumak olan eşzamansız bir işlevdir. Okuma işlemi sırasında bir hata meydana gelirse,err object ilgili hatayı içerecek, aksi takdirde veriler dosyanın içeriğini içerecektir. readFile okuma işlemi tamamlandıktan sonra hata ve verileri geri çağırma işlevine aktarır, bu da sonunda içeriği yazdırır.

Program Ended
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!