Fournisseurs asynchrones
Parfois, le démarrage de l’application doit être retardé jusqu’à ce qu’une ou plusieurs tâches asynchrones soient terminées. Par exemple, vous ne voudrez peut-être pas commencer à accepter des requêtes tant que la connexion à la base de données n’a pas été établie. Vous pouvez y parvenir en utilisant des fournisseurs asynchrones.
La syntaxe pour cela consiste à utiliser async/await
avec la syntaxe useFactory
. La fabrique retourne une Promise
, et la fonction de fabrique peut await
des tâches asynchrones. Nest attendra la résolution de la promesse avant d’instancier toute classe qui dépend (injecte) d’un tel fournisseur.
{ provide: 'ASYNC_CONNECTION', useFactory: async () => { const connection = await createConnection(options); return connection; },}
Injection
Les fournisseurs asynchrones sont injectés dans d’autres composants par leurs jetons, comme tout autre fournisseur. Dans l’exemple ci-dessus, vous utiliseriez la construction @Inject('ASYNC_CONNECTION')
.
Exemple
La recette TypeORM contient un exemple plus substantiel d’un fournisseur asynchrone.