我有模块a和模块b。模块a异步实例化其服务提供者,而模块b同步实例化。两者都包含多个端点。两个模块都是由AppModule导入的。
现在我刚开始从服务器端思考问题,我也是从角度懒散的负载中来的,所以请接受我的观点。
如果模块b的端点被激活,(?)模块也会加载吗?模块中定义的使用异步工厂实例化的服务提供者是否也会被实例化?
发布于 2019-03-18 08:28:43
异步提供程序的概念与角提供程序的概念略有不同;它与路由或控制器无关。
如果提供程序是异步的,这意味着它需要等待异步资源(允诺)被解析后才能被实例化。它可以等待建立数据库连接,也可以等待从文件系统加载配置。当应用程序启动时,所有异步提供程序都已被完全实例化。
要尝试这一点,您可以异步地添加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不是动态实例化的,您可能期望它是从角度来的。
[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 +5004mshttps://stackoverflow.com/questions/55215041
复制相似问题