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