Rate this post

Trong các ứng dụng sử dụng Node.js, các khái niệm event và Callbacks được sử dụng để cung cấp tính đồng thời. Vì các ứng dụng Node.js là một luồng đơn và mọi API của Node js đều không đồng bộ. Vì vậy, việc sử dụng một hàm async để duy trì luồng dữ liệu. Node sử dụng một thread giữ cho một vòng lặp event liên tục và sau khi thực hiện các hành động nào, node sẽ sẽ tạo ra các event tương ứng và hàm listener event sẽ được thực thi.

Các bài viết liên quan:

Lập trình theo hướng event

Node.js sử dụng lập trình hướng event. Điều này có nghĩa là ngay sau khi thực hiện tiến hành máy chủ, node bắt đầu khởi tạo các biến, tiếp tục là khai báo các function và sau đó listener các event xảy ra. Đó là nguyên nhân chính của Node.js chạy nhanh hơn so với các công nghệ tương đương khác.

Trong node có vòng lặp chính sẽ liên tục lắng nghe các event và sau đó handle các callbacks khi một trong những events xảy ra.

Sự khác biệt giữa event và Callbacks:

Mặc dù, event và Callbacks có vẻ giống nhau  nhưng sự khác nhau quan trọng nhất là callbacks được gọi khi một function không đồng bộ tiến hành thực thi và trả về kết quả của nó khi có event xảy ra. Bất cứ khi nào một event được kích hoạt, các hàm lắng nghe của event đó sẽ được thi hành. Node.js có nhiều event phù hợp được tích hợp sẵn thông qua module  event và EventEmitter sử dụng khi event xảy ra và event listener.

Lớp EventEmitter để ràng buộc event và event listener:

// Import events module  
var events = require('events');  
// Create an eventEmitter object  
var eventEmitter = new events.EventEmitter();  

Để liên kết trình xử lý event với một event:

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

Để kích hoạt một event:

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

Ví dụ Node.js Event

File: main.js

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

Bây giờ, hãy mở dấu nhắc lệnh Node.js và chạy đoạn mã sau:

node main.js  

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now