Skip to content

异步提供者

有时,应用程序的启动应该延迟到一个或多个异步任务完成之后。例如,你可能不希望在与数据库的连接建立之前就开始接受请求。你可以使用异步提供者来实现这一点。

其语法是将 async/awaituseFactory 语法结合使用。工厂函数返回一个 Promise,并且可以在其中 await 异步任务。Nest 会在实例化任何依赖(注入)该提供者的类之前,等待 Promise 解析完成。

typescript
{
  provide: 'ASYNC_CONNECTION',
  useFactory: async () => {
    const connection = await createConnection(options);
    return connection;
  },
}

提示

这里了解更多关于自定义提供者语法的内容。

注入

异步提供者通过其令牌注入到其他组件中,与其他提供者一样。在上面的示例中,你可以使用 @Inject('ASYNC_CONNECTION') 这种写法。

示例

TypeORM 方案提供了一个更完整的异步提供者示例。

基于 NestJS 官方文档翻译