美文网首页
被人忽略的api,Domain

被人忽略的api,Domain

作者: 忧郁的河蟹 | 来源:发表于2015-06-28 09:30 被阅读147次

说起domain这个api,相信很多人都觉得很陌生,因为该api是从node版本0.10 才有的,而大量国内教程基本都停留在0.8版本,所以很多人忽略了这个api,甚至不知道,实际上,这是一个非常实用的api

Domain解决了什么问题?

我们来看一段代码


var fs = require('fs');
try {
    fs.readFile('test.txt', function (err, data) {
        fewfe
        console.log(err, data);
    })
} catch (e) {
    console.log(e);
}

实际上,很多教程都会以类似上面的代码做例子,来说明在node.js 里面,传统异常的捕捉方式,将会失效。因为当在调用fs.readFile的时候,程序将会立即执行完毕,直接跳出try...catch的包裹范围,等待回调的时候,由于没有try...catch 程序直接崩溃,而domain将会完美的解决这件事情。

var fs = require('fs');
var domain = require('domain');

var d = domain.create();

d.run(function () {
    fs.readFile('test.txt', function (err, data) {
        cwefewf
        console.log(err, data);
    });

})

d.on('error', function (err) {
    console.log(err); //[ReferenceError: cwefewf is not defined]
})

domain 将会巧妙地监听回调中产生的错误 。

Domain原理

在执行domain.run 的时候,会将回调逻辑上下文保存下来,放到栈里面,当node.js在执行每一个tick的时候,都会检查domain队列里面的上下文,如果发现存在监听的上下文后,就会利用try.. catch包裹具体上下文的执行逻辑,当捕捉到错误后,通过事件error的事件方式抛出去。

伪代码

fs.readFile('demo1.txt', function () {
      try {
        cwefewf
        console.log(err, data);
      } catch (e) {
        
      }
});

相关文章

  • 被人忽略的api,Domain

    说起domain这个api,相信很多人都觉得很陌生,因为该api是从node版本0.10 才有的,而大量国内教程基...

  • nginx 反向代理解决跨域问题

    前后端实现了分离, 前端访问路径www.domain.com, 后端API请求地址:api.domain.com...

  • abp vnext 扩展 ICurrentUser,登录时增加C

    在项目 XXX.Main.Domain中新建 MyUserClaimsPrincipalFactory 添加Api...

  • 被人忽略的Model

    MVC不是一种设计模式,而是一种指导原则,简单讲就是一个应用系统被划分为M(数据模型model)V(视图view)...

  • 被人忽略冷落

    在一个社群里面看见大家聊的热火朝天。于是呢就开始心痒痒的就想和大家聊一下,就发了一条信息过去。 过了好一会儿也没有...

  • 夏紅枝我愛你

    生活中,我们渴望被人尊重,却忽略了尊重别人;渴望被人理解,却忽略了理解别人;渴望被人宽容,却忽略了宽容别人;渴望被...

  • 做人真诚

    生活中,我们渴望被人尊重!却忽略了尊重对方;渴望被人理解,却忽略了理解对...

  • 容易被人忽略的NSCache

    第一次见到NSCache,是在SDWebImage中。SDWebImage的内存缓存机制就是通过NSCache实现...

  • 一件小事的反思

    被人忽略是最糟糕的感受之一。我特别讨厌被人忽略,也极力杜绝忽略别人。可是今天我还是把琳姑娘给忽略了。 在去小渝家吃...

  • 努力被人渐渐忽略

    “他所做的每件小事就好像抓住一棵救命稻草一样,到最后你发现,他抱住的已经是参天大树了。” 如果许三多式男主在今天无...

网友评论

      本文标题:被人忽略的api,Domain

      本文链接:https://www.haomeiwen.com/subject/vfpeqttx.html