VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • Python
  • PHP
  • Eclipse
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Phần mềm tiện ích
    • Cấu trúc dữ liệu và giải thuật
    • Học lập trình C#
    • Selenium Test

Học Node.js

Node.js là gì? Cài đặt Node.js Giới thiệu qua về Module Ứng dụng Hello World REPL Terminal Node.js NPM Callback trong Node.js Event Loop trong Node.js Lớp EventEmitter Khái niệm Buffer Khái niệm Stream Đọc/Ghi File Các đối tượng Global Đối tượng Console Đối tượng Process Giới thiệu Express Framework RESTFul API là gì? Một số Utility Module Web Module OS Module path Module net Module dns Module domain Module

Event Loop trong Node.js


Callback trong Node.js
Lớp Event Emitter trong Node.js

Node.js là ứng dụng đơn luồng nhưng có hỗ trợ việc xử lí đồng thời thông qua các định nghĩa về event (sự kiện) và callback. Tất cả các API của Node.js có tính chất không đồng bộ và được xử lí đơn luồng, nó sử dụng hàm async để duy trì sự đồng thời. Node.js sử dụng Observer Pattern. Các Thread trong Node.js có một Event Loop và bất cứ khi nào có tác vụ nào hoàn thành, nó sẽ kích hoạt sự kiện tương ứng để báo cho Event Listener sẵn sàng thực hiện.


Nội dung chính

  • Khái niệm Event Driven trong Node.js
  • Ví dụ sử dụng Event Loop trong Node.js

Khái niệm Event Driven trong Node.js

Node.js sử dụng rất nhiều sự kiện, đó là lý do tại sao Node.js khá nhanh so với các công nghệ khác. Ngay khi Node khởi động Server của nó, nó sẽ nhanh chóng khởi tạo các biến, khai báo các hàm và sau đó đơn giản là chờ đợi các sự kiện xảy ra.

Trong ứng dụng xử lý sự kiện, nhìn chung vòng lặp chính lắng nghe các sự kiện, và sau đó trigger đến hàm callback khi một trong những sự kiện được phát hiện.

Event Loop trong Node.js

Nhìn chung các Event là tương tự như các hàm callback. Điểm khác nhau nằm ở chỗ, hàm callback gọi khi một hàm không đồng bộ và trả về kết quả của nó trong khi phần xử lí sự kiện làm việc trên Observer Pattern. Hàm này sẽ lắng nghe các sự kiện, đóng vai trò như một Observers (Người quan sát). Bất cứ khi nào một sự kiện phát sinh, các hàm Listener của nó sẽ bắt đầu thực thi. Node.js có nhiều sự kiện có sẵn thông qua events Module và lớp EventEmitter có thể dựa vào để bind sự kiện và lắng nghe sự kiện.

Trước khi sử dụng event Module, bạn sử dụng phương thức require() để khai báo như sau:


// Khai bao events module
var events = require('events');
// Tao mot doi tuong eventEmitter
var eventEmitter = new events.EventEmitter();

Sau đó, để gắn kết Event Handler với một sự kiện, bạn sử dụng cú pháp sau:


// Gan ket event voi Event Handler nhu sau:
eventEmitter.on('eventName', eventHandler);

Bạn có thể kích hoạt một sự kiện bởi sử dụng phương thức emit() của EventEmitter:


// Kich hoat mot event 
eventEmitter.emit('eventName');


Ví dụ sử dụng Event Loop trong Node.js

Ví dụ 1:

Tạo một file js với tên là event1.js có đoạn code sau:


// Khai bao events module
var events = require('events');
// Tao mot doi tuong eventEmitter
var eventEmitter = new events.EventEmitter();
// Tao mot Event Handler nhu sau:
var connectHandler = function connected() {
   console.log('Tao ket noi thanh cong!');
   // Kich hoat su kien data_received 
   eventEmitter.emit('data_received');
}
// Gan ket su kien connection voi Event Handler
eventEmitter.on('connection', connectHandler);
 
// Gan ket su kien data_received voi mot ham an danh
eventEmitter.on('data_received', function() {
   console.log('Du lieu duoc tiep nhan thanh cong.');
});
// Kich hoat su kien connection 
eventEmitter.emit('connection');
console.log("Ket thuc chuong trinh.");

Chạy chương trình trên như sau:


> node event1.js

Kết quả là:

Event Loop trong Node.js

Ví dụ 2:

Trong ứng dụng Node.js, một hàm không đồng bộ chấp nhận một callback như tham số cuối cùng và hàm callback chấp nhận error như tham số đầu tiên. Cùng xem lại ví dụ trước. Tạo một text file với tên input.txt với nội dung sau đây:


Vi du Event Loop trong Node.js

Trong ví dụ này, chúng ta sử dụng Module fs để xử lý các hoạt động File I/O. Đầu tiên, bạn tạo một file js với tên là event2.js như sau:


var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
   if (err){
      return console.error(err);
   }
   console.log(data.toString());
});
console.log("Ket thuc chuong trinh.");

Ở đây, fs.readFile() là một hàm không đồng bộ với mục đích để đọc file. Nếu có một lỗi xảy ra trong quá trình đọc file, đối tượng err sẽ chứa lỗi đó, nếu không thì data sẽ chứa các phần nội dung của file đó. Hàm readFile truyền err và data đến hàm callback sau khi quá trình đọc file đã hoàn thành, và cuối cùng sẽ in ra nội dung.

Kết quả sẽ là:

Event Loop trong Node.js
Callback trong Node.js
Lớp Event Emitter trong Node.js

Recent Updates

Domain Module trong Node.jsDNS Module trong Node.jsNet Module trong Node.jsPath Module trong Node.jsOS Module trong Node.jsWeb Module trong Node.jsUtility Module trong Node.jsRestFul API trong Node.jsExpress Framework trong Node.jsĐối tượng Process trong Node.jsĐối tượng Console trong Node.jsĐối tượng Global trong Node.js

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn

Danh sách bài học

Học java
Học servlet
Học jsp
Học Hibernate
Học Struts2
Học Spring
Học SQL

Câu hỏi phỏng vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

About VietTuts.Vn

Hệ thống bài học trên VietTuts.Vn bao gồm các bài lý thuyết và thực hành về các công nghệ java và công nghệ web. Các bài lý thuyết trên hệ thống VietTuts.Vn được tham khảo và tổng hợp từ các trang http://javatpoint.com, http://www.tutorialspoint.com, http://docs.oracle.com/en …

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | VietTuts.Vn team | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml