Bạn đọc có thể xem thêm một số bài viết khác về Học Node.js trên Mytour để tìm hiểu chi tiết về cách cài đặt Node.js và tạo ứng dụng Node.js như thế nào. Hãy tham khảo nội dung bài viết dưới đây để tìm hiểu thêm về Sự kiện trong Node.js.
Khám phá ý nghĩa của Sự kiện trong Node.js
Khái niệm về Sự kiện trong Node.js
Trong ứng dụng Node.js, các ý niệm về Sự kiện và Callback được áp dụng để hỗ trợ xử lý đồng thời. Vì Node.js là ứng dụng Single Threaded và các API của Node là không đồng bộ (asynchronous), do đó, nó sử dụng hàm async để duy trì tính đồng thời.
Node.js sử dụng Mô hình Quan sát (Observer Pattern). Các Thread trong Node.js sẽ giữ một Vòng lặp Sự kiện, mỗi khi có tác vụ hoàn thành, nó sẽ kích hoạt Sự kiện tương ứng để thông báo cho hàm Nghe sự kiện sẵn sàng thực thi.
Mô hình lập trình hướng sự kiện (Event Driven Programming)
Node.js ứng dụng lập trình hướng sự kiện, ngay khi máy chủ khởi động, nó sẽ khởi tạo biến, khai báo hàm và đợi sự kiện xảy ra. Đây là lý do giải thích tại sao Node.js nhanh hơn so với các công nghệ tương tự.
Vòng lặp chính trong ứng dụng mô hình hướng sự kiện sẽ lắng nghe sự kiện, sau đó kích hoạt hàm callback nếu phát hiện có sự kiện.
Sự khác biệt giữa Sự kiện và Callback trong Node.js
Mặc dù Sự kiện và Callback có nhiều điểm giống nhau, nhưng thực tế, chúng cũng khác nhau nhiều. Hàm Callback được gọi khi một hàm không đồng bộ trả về kết quả, trong khi Event Handler xử lý theo Mô hình Quan sát (Observer Pattern).
Khi Sự kiện được kích hoạt, hàm Nghe sự kiện sẽ bắt đầu thực thi. Node.js tích hợp nhiều sự kiện khác nhau thông qua các module sự kiện, và lớp EventEmitter được sử dụng để liên kết các sự kiện và người nghe sự kiện.
Để liên kết lớp EventEmitter với Sự kiện và Người nghe sự kiện, bạn có thể sử dụng cú pháp sau đây:
// Nhập mô-đun sự kiện
var events = require('events');
// Tạo đối tượng eventEmitter
var eventEmitter = new events.EventEmitter();
Để kết nối Xử lý Sự kiện với Sự kiện, bạn có thể sử dụng cú pháp sau đây:
// Liên kết sự kiện và xử lý sự kiện như sau
eventEmitter.on('tenSuKien', xuLySuKien);
Để kích hoạt Sự kiện, bạn có thể sử dụng cú pháp sau đây:
// Kích hoạt một sự kiện
eventEmitter.emit('tenSuKien');
Một Ví dụ về Sự kiện trong Node.js
Tạo tệp js với tên là main.js và chứa mã dưới đây:
Tiếp theo, mở Command Prompt của Node.js và nhập lệnh sau để chạy chương trình và kiểm tra kết quả đầu ra:
node main.js
Kết quả trả về sẽ giống như bên dưới đây:
Kết nối thành công.
Dữ liệu nhận được thành công.
Chương trình kết thúc.
Node hoạt động như thế nào?
Trong ứng dụng Node, mọi hàm async đều sẽ chấp nhận callback làm tham số cuối cùng và hàm callback sẽ nhận một lỗi làm tham số đầu tiên. Hãy xem ví dụ dưới đây, tạo một file văn bản có tên là input.txt với nội dung sau:
Tutorials Point cung cấp nội dung tự học
để giáo dục thế giới một cách đơn giản và dễ dàng!!!!!
Tiếp theo, tạo một file js với tên là main.js, có chứa đoạn mã như sau:
var fs = require('fs');
fs.readFile('input.txt', function (err, data) {
if (err) {
console.log(err.stack);
return;
}
console.log(data.toString());
});
console.log('Chương trình đã kết thúc');
Trong đó, hàm fs.readFile() là một hàm bất đồng bộ được sử dụng để đọc file. Nếu có lỗi xảy ra trong quá trình đọc, đối tượng err sẽ chứa lỗi tương ứng, hoặc data sẽ chứa nội dung của file sau khi đọc xong. Sau đó, hàm sẽ truyền err và data vào hàm callback sau khi quá trình đọc file kết thúc, và cuối cùng là in nội dung.
Chương trình đã kết thúc
Tutorials Point mang đến nội dung tự học
để giáo dục thế giới một cách đơn giản và dễ hiểu!!!!!
Ở đây, bạn độc giả vừa cùng Mytour khám phá Tìm hiểu về Event trong Node.js là gì. Nếu muốn hiểu sâu hơn về NPM hay Callback trong Node.js, độc giả có thể tham khảo thêm một số bài viết khác đã xuất hiện trên Mytour để cập nhật thông tin thêm nhé.
Trong những bài viết sắp tới, Mytour sẽ tiếp tục giới thiệu về lớp EventEmitter trong Node.js nhé.
