节点光纤会破坏节点域吗?

时间:2013-11-01 18:11:15

标签: node.js node-fibers node.js-domains

我目前正在使用节点光纤来编写同步服务器端代码。我主要通过try-catch块进行错误处理,但总是有可能在外部库或其他一些异步代码中发生错误。我正在考虑使用新域功能尝试将这些错误路由到正确的请求,我想知道是否有人尝试在同一个应用程序中使用光纤和域。

根据域在幕后工作的方式,我可以想象光纤可能会破坏用于将异步代码与正确域相关联的一些假设。具体来说,我担心域名可能会像以下一样跟踪上下文,这可能会破坏光纤,因为光纤会破坏在任何其他代码运行之前函数运行完成的保证:

run_in_domain = function(to_run) {
    var old_domain = global_domain;
    global_domain = new_domain();
    try {
        to_run();
    } finally {
        global_domain = old_domain;
    }
}

有没有人成功或未成功地尝试让光纤和域名一起玩?

1 个答案:

答案 0 :(得分:2)

我写了一篇关于节点域如何工作的文章。 How Node Domains Work

基本上它们的工作方式与process.on('uncaughtException')类似。

我可以看到node-fibers的作者声明你可以使用process.on('uncaughtException')来处理带有节点光纤的异常,所以不应该有问题。见Handling Uncaught Exceptions in a Fiber