1

我目前正在使用节点光纤来编写同步服务器端代码。我主要通过 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;
    }
}

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

4

1 回答 1

2

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

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

我可以看到 node-fibers 的作者指出您可以使用process.on('uncaughtException')node-fibers 来处理异常,因此应该没有问题。请参阅处理光纤中的未捕获异常

于 2013-11-01T20:33:21.200 回答