在node.js中创建新实例; require-unreached线程安全

时间:2016-11-30 20:03:42

标签: javascript node.js design-patterns thread-safety

我有一个系统将提供高吞吐量的HTTP请求,我正在尝试为每个请求加载一个带有新实例的自定义模块。我想创建一个新实例的原因是因为在模块中是一个在多个promise链中的promises之间共享的对象。我希望为该模块的每个实例隔离该对象。我意识到这可能被认为是某些商店的反模式,但我喜欢拥有一个可以在许多复杂的承诺链中使用的动态对象,因为它允许我的承诺可以通过许多不同的方式重用。我喜欢承诺链如何组织我的代码,模式本身很适合我的需求,但是如果有的话,我想听听替代方案。这是一个例子:

var reusableObject;

module.exports = function() {
    return {
        myFunction: function() {
            return somePromise()
            .then(anotherPromise)
            .then(yetAnotherPromise)
            .then(function() { return reusableObject; })
        }
}

我的问题的第二部分是关于使用节点的本机模块加载器实例化新模块,require。我尝试使用new var service = new (require('myModule'))()运算符创建模块的新实例,但未成功。我最好的猜测是,在下面,node的需要是从缓存中获取模块。

我遇到了一个名为require-uncached的模块,瞧,我成功地创建了模块的新实例。但是,当浏览code时,我担心require-uncached模块加载器不是线程安全的。我意识到是时候进行一些专家分析了。任何帮助都是适用的。 TIA

0 个答案:

没有答案