[Node.js] Phần 8: Các sự kiện trong Node.js

863 lượt xem 
 Cập nhật lần cuối: 18/07/2017 lúc 23:19:02
Thể loại: Node.js, Thiết kế Web 

Node.js hỗ trợ các sự kiện trong các ứng dụng rất hoàn hảo. Các hành động trong máy tính được gọi là 1 sự kiện (event), chẳng hạn như mở tập tin là 1 sự kiện. Các đối tượng trong Node.js có thể phát sinh sự kiện, như đối tượng readStream phát sinh các sự kiện khi mở và đóng một tập tin.

var fs = require('fs');
var rs = fs.createReadStream('./demo.txt'); // 
rs.on('open', function () {
  console.log('Tap tin duoc mo ra');
});

Module Events
Node.js chứa 1 module tích hợp sẵn, gọi là “Events” (các sự kiện), nơi bạn có thể tạo, phát sinh và lắng nghe các sự kiện của riêng bạn.

Để nhúng module Events, bạn cũng sử dụng phương thức require(). Thêm nữa, tất cả thuộc tính và phương thức sự kiện là một thể hiện của đối tượng EventEmitter. Để truy cập các thuộc tính và phương thức này, bạn hãy tạo một đối tượng EventEmitter như sau:

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

Đối tượng EventEmitter
Bạn có thể gán các xử lý sự kiện thành các sự kiện của riêng bạn với đối tượng EventEmitter. Ví dụ sau sẽ tạo 1 hàm mà sẽ được thực thi khi một sự kiện “dammio” được kích hoạt. Để kích hoạt 1 sự kiện, bạn có thể dùng phương thức emit().

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

//Tạo 1 hàm xử lý sự kiện
var myEventHandler = function () {
  console.log('Su kien dammio duoc kich hoat!');
}

//Gán xử lý sự kiện là 1 sự kiện.
eventEmitter.on('dammio', myEventHandler);

//Kích hoạt sự kiện 'dammio'
eventEmitter.emit('dammio');

Bạn lưu đoạn mã trên vào tập tin dammio_event.js, sau đó dùng lệnh cmd để chạy tập tin này và xem kết quả như sau:

Kết luận: Bài viết đã trình bày cho bạn xong nội dung về các sự kiện trong Node.js kèm theo các ví dụ.

Bình luận Facebook

2
Để lại bình luận

avatar
1000
0 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Comment authors
Recent comment authors
  Subscribe  
newest oldest most voted
Notify of