Node.js: Sự kiện trong Node.js

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Mỗi hành động trên máy tính là một sự kiện. Giống như khi kết nối được thực hiện hoặc một tệp được mở.

Các đối tượng trong Node.js có thể kích hoạt các sự kiện, như đối tượng readStream kích hoạt các sự kiện khi mở và đóng một tệp:

var fs = require('fs');
var rs = fs.createReadStream('./demofile.txt');
rs.on('open', function () {
  console.log('The file is open');
});

Mô-đun events

Node.js có một mô-đun tích hợp là "events". Với module này thì bạn có thể tạo, khởi tạo và lắng nghe các sự kiện của riêng mình.

Để tích hợp mô-đun events thì ta sử dụng phương thức require(). Ngoài ra, tất cả các thuộc tính và phương thức sự kiện là một thể hiện của một đối tượng EventEmitter. Để có thể truy cập các thuộc tính và phương thức này thì ta sẽ tạo một đối tượng EventEmitter:

var events = require('events');
var eventEmitter = new events.EventEmitter();

Đối tượng EventEmitter

Bạn có thể chỉ định trình xử lý sự kiện cho các sự kiện của riêng mình bằng đối tượng EventEmitter.

Trong ví dụ dưới đây ta đã tạo một hàm sẽ được thực thi khi sự kiện "scream" được kích hoạt.

Để kích hoạt một sự kiện ta sử dụng phương thức emit().

var events = require('events');
var eventEmitter = new events.EventEmitter();

//tạo một trình xử lý sự kiện:
var myEventHandler = function () {
  console.log('I hear a scream!');
}

//gán trình trình xử lý sự kiện cho sự kiện scream:
eventEmitter.on('scream', myEventHandler);

//kích hoạt sự kiện scream:
eventEmitter.emit('scream');

Lưu trữ đoạn mã trên với tên tệp là demo_events.js.

Khởi tạo tệp để thấy kết quả:

C:\Users\Your name\nodejs>node demo_events.js

» Tiếp: Module formidable
« Trước: NPM trong Node.js
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!