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ụ.
- APA:
Dammio. (2017). [Node.js] Phần 8: Các sự kiện trong Node.js. https://www.dammio.com/2017/07/15/node-js-phan-8-cac-su-kien-trong-node-js.
- BibTeX:
@misc{dammio,
author = {Dammio},
title = {[Node.js] Phần 8: Các sự kiện trong Node.js},
year = {2017},
url = {https://www.dammio.com/2017/07/15/node-js-phan-8-cac-su-kien-trong-node-js},
urldate = {2025-02-08}
}