때때로 애플리케이션 시작은 하나 이상의 비동기 작업이 완료될 때까지 지연되어야 합니다.
예를 들어 데이터베이스와의 연결이 된 후에 요청을 받기 시작하려 하는 상황 등이 있습니다.
ansync providers
를 사용하여 이를 달성할 수 있습니다.
useFactory
구문과 async/await
구문을 함께 사용하는 것으로 이와 같은 비동기 작업을 처리할 수 있습니다. factory
는 Promise
값을 리턴하고, factory function
은 비동기 작업을 기다릴 수 있습니다.
Nest는 provider에 의해 의존성을 주입하려는 클래스를 인스턴스화하기 전까지 기다립니다.
{
provide: 'ASYNC_CONNECTION',
useFactory: async () => {
const connection = await createConnection(options);
return connection;
},
}
비동기 공급자는 다른 공급자와 마찬가지로 토큰으로 다른 구성 요소에 주입됩니다.
@Inject('ASYNC_CONNECTION')
이와 같은 구문으로 주입할 수 있습니다.