[Node.js]Domain模块

Domain(域)模块简化了异步代码的异常处理方式,可以捕捉处理try catch无法捕捉的异常。

引入

domain=require("domain");

domain模块,把处理多个不同的IO的操作作为一个组。注册事件和回调到domain,当发生一个错误事件或抛出一个错误时,domain对象会被通知,不会丢失上下文环境,也不导致程序错误立即推出,与process.on('uncaughtException')不同。

Domain 模块可分为隐式绑定和显式绑定:

  • 隐式绑定: 把在domain上下文中定义的变量,自动绑定到domain对象
  • 显式绑定: 把不是在domain上下文中定义的变量,以代码的方式绑定到domain对

方法

domain.run(function)

在域的上下文运行提供的函数,隐式的绑定了所有的事件分发器,计时器和底层请求。

domain.add(emitter)

显式的增加事件

domain.remove(emitter)

删除事件。

domain.bind(callback)

返回的函数是一个对于所提供的回调函数的包装函数。当调用这个返回的函数被时,所有被抛出的错误都会被导向到这个域的 error 事件。

domain.intercept(callback)

和 domain.bind(callback) 类似。除了捕捉被抛出的错误外,它还会拦截 Error 对象作为参数传递到这个函数

domain.enter()

进入一个异步调用的上下文,绑定到domain。

domain.exit()

退出当前的domain,切换到不同的链的异步调用的上下文中。对应domain.enter()。

domain.dispose()

释放一个domain对象,让node进程回收这部分资源。

domain.create()

返回一个domain对象。

属性

domain.members

一个例子

创建domain.js,代码如下:

domain=require("domain" EventEmitter=require("events"<span style="color: #0000ff;">var emitter1=<span style="color: #0000ff;">new<span style="color: #000000;"> EventEmitter();
<span style="color: #008000;">//<span style="color: #008000;">创建域
<span style="color: #0000ff;">var domain1=<span style="color: #000000;">domain.create();
domain1.on("error",<span style="color: #0000ff;">function<span style="color: #000000;">(err){
console.log("domain1 处理错误"<span style="color: #000000;">,err.message);
});
<span style="color: #008000;">//<span style="color: #008000;">显示绑定
<span style="color: #000000;">domain1.add(emitter1);
emitter1.on("error",<span style="color: #0000ff;">function<span style="color: #000000;">(err){
console.log("监听器处理错误"<span style="color: #000000;">,err.message);
});
emitter1.emit("error",<span style="color: #0000ff;">new Error("通过监听器来处理"<span style="color: #000000;">));
emitter1.removeAllListeners("error"<span style="color: #000000;">);
emitter1.emit("error",<span style="color: #0000ff;">new Error("通过domain1 处理"<span style="color: #000000;">));
<span style="color: #0000ff;">var domain2=<span style="color: #000000;">domain.create();
domain2.on("error",<span style="color: #0000ff;">function<span style="color: #000000;">(err){
console.log("domain2 处理错误"<span style="color: #000000;">,err.message);
});
<span style="color: #008000;">//<span style="color: #008000;">隐式绑定
domain2.run(<span style="color: #0000ff;">function<span style="color: #000000;">(err){
<span style="color: #0000ff;">var emitter2 = <span style="color: #0000ff;">new<span style="color: #000000;"> EventEmitter();
emitter2.emit('error',<span style="color: #0000ff;">new Error('通过 domain2 处理'<span style="color: #000000;">));
});
domain1.remove(emitter1);
emitter1.emit('error',<span style="color: #0000ff;">new Error("转换为异常,系统将崩溃"));

运行

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于nodejs...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么实现目录不存在自动创建”文章能帮助大...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs如何实现定时删除文件”文章能帮助大家解决疑惑...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
本篇内容主要讲解“怎么安装Node.js的旧版本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎...
这篇“node中的Express框架怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要介绍“nodejs如何实现搜索引擎”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs如何实现搜索引擎...
这篇文章主要介绍“nodejs中间层如何设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs中间层如何设置”文...
这篇文章主要介绍“nodejs多线程怎么实现”,在日常操作中,相信很多人在nodejs多线程怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
这篇文章主要讲解了“nodejs怎么分布式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs怎么分布式”...
本篇内容介绍了“nodejs字符串怎么转换为数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
这篇文章主要介绍了nodejs如何运行在php服务器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nodejs如何运行在php服务器文章都...
本篇内容主要讲解“nodejs单线程如何处理事件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs单线程如何...
这篇文章主要介绍“nodejs怎么安装ws模块”,在日常操作中,相信很多人在nodejs怎么安装ws模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
本篇内容介绍了“怎么打包nodejs代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!
本文小编为大家详细介绍“nodejs接收到的汉字乱码怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs接收到的汉字乱码怎么解决”文章能帮助大家解...
这篇“nodejs怎么同步删除文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇...
今天小编给大家分享一下nodejs怎么设置淘宝镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希