1. 程式人生 > 程式設計 >Node.js Domain 模組例項詳解

Node.js Domain 模組例項詳解

Node.jsDomain(域) 簡化非同步程式碼的異常處理,可以捕捉處理try catch無法捕捉的異常。

Domain 模組可分為隱式繫結和顯式繫結:

  • 隱式繫結: 把在domain上下文中定義的變數,自動繫結到domain物件
  • 顯式繫結: 把不是在domain上下文中定義的變數,以程式碼的方式繫結到domain物件

建立domain.js,程式碼如下:

var eventEmitter=require("events").EventEmitter;
var domain=require("domain");
var emitter1=new eventEmitter();
//建立域
var domain1=domain.create();
domain1.on("error",function(err){
  console.log("domain1來處理這個錯誤:"+err.message);
})
//顯示繫結
domain1.add(emitter1);
//新增emitter1對error的監聽
emitter1.on("error",function(err){
  console.log("emitter1來處理這個錯誤:"+err.message);
})
emitter1.emit("error",new Error("觸發錯誤,指定由emitter1處理"));
emitter1.removeAllListeners("error");//移除emitter1對error的監聽
emitter1.emit("error",new Error("觸發錯誤,指定由domain1處理"));
//建立域
var domain2=domain.create();
domain2.on("error",function(err){
  console.log("domain2來處理這個錯誤:"+err.message);
})
//隱式繫結
domain2.run(function(){
  var emitter2=new eventEmitter();
  emitter2.emit("error",new Error("觸發錯誤,指定由domain2處理"));
})
domain1.remove(emitter1);
emitter1.emit("error",new Error("觸發錯誤,系統將崩潰"));

總結

到此這篇關於Node.js Domain 模組例項詳解的文章就介紹到這了,更多相關node.js domain 模組內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!