Node.js - Loop Peristiwa

Node.js adalah aplikasi single-threaded, tetapi dapat mendukung konkurensi melalui konsep event dan callbacks. Setiap API Node.js bersifat asinkron dan menjadi satu utas, yang mereka gunakanasync function callsuntuk mempertahankan konkurensi. Node menggunakan pola pengamat. Rangkaian node menyimpan perulangan peristiwa dan setiap kali tugas diselesaikan, ia mengaktifkan peristiwa terkait yang menandakan fungsi pemroses peristiwa untuk dijalankan.

Pemrograman Berbasis Peristiwa

Node.js banyak menggunakan peristiwa dan itu juga salah satu alasan mengapa Node.js cukup cepat dibandingkan dengan teknologi serupa lainnya. Segera setelah Node memulai servernya, Node hanya memulai variabelnya, mendeklarasikan fungsi, dan kemudian hanya menunggu peristiwa itu terjadi.

Dalam aplikasi yang digerakkan oleh peristiwa, biasanya ada loop utama yang mendengarkan peristiwa, lalu memicu fungsi callback saat salah satu peristiwa tersebut terdeteksi.

Meskipun peristiwa terlihat sangat mirip dengan callback, perbedaannya terletak pada fakta bahwa fungsi callback dipanggil saat fungsi asinkron mengembalikan hasilnya, sedangkan penanganan peristiwa berfungsi pada pola pengamat. Fungsi yang mendengarkan acara bertindak sebagaiObservers. Setiap kali suatu peristiwa diaktifkan, fungsi pemrosesnya mulai dijalankan. Node.js memiliki beberapa peristiwa built-in yang tersedia melalui modul peristiwa dan kelas EventEmitter yang digunakan untuk mengikat peristiwa dan pemroses peristiwa sebagai berikut -

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

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

Berikut adalah sintaks untuk mengikat event handler dengan event -

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

Kita dapat mengaktifkan peristiwa secara terprogram sebagai berikut -

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

Contoh

Buat file js bernama main.js dengan kode berikut -

// 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.");

Sekarang mari kita coba menjalankan program di atas dan memeriksa keluarannya -

$ node main.js

TI harus menghasilkan hasil sebagai berikut -

connection successful.
data received successfully.
Program Ended.

Bagaimana Cara Kerja Aplikasi Node?

Dalam Aplikasi Node, setiap fungsi asinkron menerima panggilan balik sebagai parameter terakhir dan fungsi panggilan balik menerima kesalahan sebagai parameter pertama. Mari kita lihat kembali contoh sebelumnya. Buat file teks bernama input.txt dengan konten berikut.

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

Buat file js bernama main.js yang memiliki kode berikut -

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");

Di sini fs.readFile () adalah fungsi async yang tujuannya adalah untuk membaca file. Jika kesalahan terjadi selama operasi baca, maka fileerr object akan berisi kesalahan yang sesuai, jika tidak data akan berisi konten file. readFile meneruskan err dan data ke fungsi panggilan balik setelah operasi baca selesai, yang akhirnya mencetak konten.

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