logo

Asynchronous providers

preview
June 5, 2024

이 글은 Nest 공식문서를 번역한 글입니다. 원문

때로는 하나 이상의 비동기 작업이 완료될 때까지 애플리케이션 시작을 지연시켜야 하는 경우가 있습니다. 예를 들어 데이터베이스와의 연결이 설정될 때까지 요청 수락을 시작하지 않으려는 경우가 있습니다. 비동기 공급자를 사용하면 이를 달성할 수 있습니다.

이를 위한 구문은 useFactory 구문과 함께 async/await을 사용하는 것입니다. 팩토리는 Promise를 반환하고, 팩토리 함수는 비동기 작업을 await할 수 있습니다. Nest는 이러한 프로바이더에 의존(주입)하는 클래스를 인스턴스화하기 전에 Promise의 해결을 기다립니다.

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

HINT

여기에서  custom provider 구문에 대해 자세히 알아보세요.

Injection#

Asynchronous providers는 다른 공급자와 마찬가지로 토큰에 의해 다른 컴포넌트에 주입됩니다. 위의 예시에서는 @Inject('ASYNC_CONNECTION') 구문을 사용합니다.

Example#

TypeORM 레시피에는 비동기식 공급자의 보다 실질적인 예시가 있습니다.