2017-10-17 66 views
0

试想一下,我们有2的简单类(略)口:Node.js的性能

class SomeService { 
    async func() { 
    // some async function logic 
    return value; 
    } 
} 

class SomeController { 
    constructor (service) { 
    this.service = service; 
    } 
    async func() { 
    const value = await this.service.func(); 
    // some controller-specific logic here 
    return value; 
    } 
} 

此外,我们得到了简单的功能,即通过两种方式使用此两班。

案例一:

// require clasess 

const somefunc = async() => { 
    const controller = new SomeController(new SomeService()); 
    const value = await controller.func(); 
    return value; 
} 
module.exports = somefunc; 

案例二:

// require clasess 
const controller = new SomeController(new SomeService()); 

const somefunc = async() => { 
    const value = await controller.func(); 
    return value; 
} 
module.exports = somefunc; 

据我了解节点的require作品在第一种情况下controller会当每次somefunc被调用时被创建。在第二种情况下,只有一次创建controller,文件将被评估。什么情况更好,更重要的是我应该阅读或查找什么来理解为什么?

+0

这不是关于“哪个更好”,而是“哪个范围更好地模拟了你正试图解决的问题”。 – aaaaaa

回答

0

我想答案取决于你的用例。每次调用或不调用函数时,都必须问自己是否需要重新创建SomeController。另一个要考虑的问题是SomeController在初始化时是否依赖某种异步。例如,如果控制器需要在其构造函数中访问数据库连接,则必须等待建立数据库连接。在这种情况下,您可能别无选择,只能在函数内初始化SomeController。正如我所说的,在这种情况下没有客观的better。这完全取决于你的用例。