nestjs中的模块分辨率

问题描述 投票:0回答:1

我有模块a和模块b。模块a异步实例化其服务提供者,而模块b同步实例化。两者都包含多个端点。这两个模块都是由AppModule导入的。

现在我很想从服务器端思考问题,而且我也是来自角度延迟加载,所以请耐心等待。

如果模块b的端点被激活(?)模块也是负载?模块a中定义的服务提供者是否使用异步工厂进行实例化,也实例化了?

javascript node.js typescript nestjs
1个回答
0
投票

异步提供程序的概念与Angular的有点不同;它与路线或控制器无关。

如果提供程序是异步的,则意味着它需要等待异步资源(Promise)在实例化之前得到解析。这可以等待建立数据库连接或从文件系统加载配置。应用程序启动后,所有异步提供程序都已完全实例化。


要尝试这一点,您可以异步添加HttpModule,如下所示:

HttpModule.registerAsync({
  useFactory: async () => {
    console.log('Starting to instantiate');
    // wait 5 seconds to simulate asynchronous task
    await new Promise(resolve => setTimeout(resolve, 5000));
    console.log('Done after 5 seconds');
    return {};
  },
}),

],

启动应用程序时,您将看到启动将等待5秒钟。 HttpModule没有像你预期的那样动态实例化来自Angular。

[Nest] 242   - 3/18/2019, 2:08:04 PM   [NestFactory] Starting Nest application...
Starting to instantiate
[Nest] 242   - 3/18/2019, 2:08:04 PM   [InstanceLoader] AppModule dependencies initialized +8ms
Done after 5 minutes
[Nest] 242   - 3/18/2019, 2:08:09 PM   [InstanceLoader] HttpModule dependencies initialized +5004ms
© www.soinside.com 2019 - 2024. All rights reserved.