异步提供者
有时,应用程序的启动应该延迟到一个或多个异步任务完成之后。例如,你可能不希望在与数据库的连接建立之前就开始接受请求。你可以使用异步提供者来实现这一点。
其语法是将 async/await 与 useFactory 语法结合使用。工厂函数返回一个 Promise,并且可以在其中 await 异步任务。Nest 会在实例化任何依赖(注入)该提供者的类之前,等待 Promise 解析完成。
typescript
{
provide: 'ASYNC_CONNECTION',
useFactory: async () => {
const connection = await createConnection(options);
return connection;
},
}提示
在这里了解更多关于自定义提供者语法的内容。
注入
异步提供者通过其令牌注入到其他组件中,与其他提供者一样。在上面的示例中,你可以使用 @Inject('ASYNC_CONNECTION') 这种写法。
示例
TypeORM 方案提供了一个更完整的异步提供者示例。