Иногда запуск приложения должен быть отложен до завершения одной или нескольких асинхронных задач. Например, вы можете не начинать принимать запросы, пока не будет установлено соединение с базой данных. Этого можно добиться с помощью асинхронных провайдеров.
Синтаксис для этого заключается в использовании async/await
с синтаксисом useFactory
. Фабрика возвращает Promise
, а функция фабрики использует await
асинхронных задач. Nest будет ожидать разрешения промиса перед инстанцированием любого класса, который зависит от такого провайдера.
{
provide: 'ASYNC_CONNECTION',
useFactory: async () => {
const connection = await createConnection(options);
return connection;
},
}
Асинхронные провайдеры инжектируются в другие компоненты с помощью своих маркеров, как и любой другой провайдер. В примере выше вы бы использовали конструкцию @Inject('ASYNC_CONNECTION')
0 комментариев