首页 >> js开发 >> JavaScriptNode.js Domain 模块实例详解
JavaScriptNode.js Domain 模块实例详解
发布时间: 2021年1月13日 | 浏览:
| 分类:js开发
Node.js Domain(域) 简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的异常。Domain 模块可分为隐式绑定和显式绑定:
隐式绑定: 把在domain上下文中定义的变量,自动绑定到domain对象
显式绑定: 把不是在domain上下文中定义的变量,以代码的方式绑定到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("触发错误,系统将崩溃"));
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("触发错误,系统将崩溃"));总结总结总结
隐式绑定: 把在domain上下文中定义的变量,自动绑定到domain对象
显式绑定: 把不是在domain上下文中定义的变量,以代码的方式绑定到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("触发错误,系统将崩溃"));
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("触发错误,系统将崩溃"));总结总结总结
相关文章:
- jsvue中移动端调取本地的复制的文本方式js大全
- JavaScriptvuejs element table 表格添加行,修改,单独删除行,批量删除行操作
- js解决echarts图表使用v-show控制图表显示不全的问题js大全
- JavaScriptecharts.js 动态生成多个图表 使用vue封装组件操作
- jsvue-router为激活的路由设置样式操作js大全
- js完美解决vue 中多个echarts图表自适应的问题js大全
- js解决Vue @submit 提交后不刷新页面问题js大全
- jsJS中作用域以及变量范围分析js大全
- jsvue cli4.0项目引入typescript的方法js大全
- jsvue 点击其他区域关闭自定义div操作js大全