Domain Module trong Node.js



domain Module trong Node.js được sử dụng để can thiệp các lỗi chưa được xử lý. Các lỗi này có thể được can thiệp bằng cách sử dụng Internal Binding hoặc External Binding.

  • Internal Binding - Error Emmitter đang thực thi phần code của nó bên trong phương thức run của một Domain.

  • External Binding - Error Emmitter được thêm vào một Domain bởi sử dụng phương thức add.

Để sử dụng domain Module trong Node.js, bạn cần import theo cú pháp sau.

var domain = require("domain")

Lớp Domain của domain Module được sử dụng để cung cấp tính năng định tuyến các Error và Exception tới một đối tượng Domain. Lớp này là lớp con của lớp EventEmitter. Lớp Domain này xử lý các lỗi mà nó bắt được và lắng nghe sự kiện error của nó. Đối tượng này có thể được tạo bởi cú pháp:

var domain = require("domain");
var child = domain.create();
Quảng cáo

Phương thức của domain Module trong Node.js

SttPhương thức & Miêu tả
1domain.run(function)
Chạy hàm function trong ngữ cảnh của domain, bind tất cả các Event Emitter, Timer, và các Request tầm thấp mà đã được tạo trong ngữ cảnh đó. Đây là cách cơ bản nhất để sử dụng một domain.
2domain.add(emitter)
Thêm Emitter tới domain. Nếu có bất kỳ Event Handler nào được gọi bởi Emitter mà ném một Error, thì nó sẽ được định tuyến tới sự kiện error của domain.
3domain.remove(emitter)
Trái ngược với phương thức domain.add(emitter). Xóa Emitter nào đó khỏi domain.
4domain.exit()
Thoát khỏi domain hiện tại

Thuộc tính của domain Module trong Node.js

SttThuộc tính & Miêu tả
1domain.members
Một mảng các Timer và Event Emitter đã được thêm tới domain.

Ví dụ

Ví dụ sau minh họa một số phương thức của domain Module trong Node.js. Bạn tạo main.js có nội dung sau:

var EventEmitter = require("events").EventEmitter;
var domain = require("domain");

var emitter1 = new EventEmitter();

// Tao mot domain boi su dung phuong thuc create()
var domain1 = domain.create();

domain1.on('error', function(err){
   console.log("domain1 se xu ly loi: ("+err.message+")");
});

// Them mot Emitter toi domain boi phuong thuc add()
domain1.add(emitter1);

emitter1.on('error',function(err){
   console.log("listener se xu ly loi: ("+err.message+")");
});

emitter1.emit('error',new Error('Duoc xu ly boi listener'));

emitter1.removeAllListeners('error');

emitter1.emit('error',new Error('Duoc xu ly boi domain1'));

var domain2 = domain.create();

domain2.on('error', function(err){
   console.log("domain2 se xu ly loi: ("+err.message+")");
});

// Them mot Emitter toi domain boi phuong thuc run()
domain2.run(function(){
   var emitter2 = new EventEmitter();
   emitter2.emit('error',new Error('Duoc xu ly boi domain2'));   
});


domain1.remove(emitter1);
emitter1.emit('error', new Error('Da chuyen doi thanh Exception. He thong bi pha vo!'));
Quảng cáo

Chạy main.js để xem kết quả::

$ node main.js

Kiểm tra kết quả:

listener se xu ly loi: (Duoc xu ly boi listener)
domain1 se xu ly loi: (Duoc xu ly boi domain1)
domain2 se xu ly loi: (Duoc xu ly boi domain2)

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: Da chuyen doi thanh Exception. He thong bi pha vo!
    at Object. (/web/com/1427722220_30772/main.js:40:24)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học NodeJS phổ biến khác tại VietJack:


utility_module_trong_nodejs.jsp


Tài liệu giáo viên