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, il se peut que vous ne souhaitiez pas commencer à accepter des requêtes tant que la connexion avec la base de données n'a pas été établie. Vous pouvez y parvenir en utilisant des fournisseurs asynchrones.
La syntaxe pour cela est d'utiliser async/await avec la syntaxe useFactory. La factory renvoie une Promise, et la fonction factory peut await les tâches asynchrones. Nest attendra la résolution de la promesse avant d'instancier toute classe qui dépend d'un tel fournisseur (qui l'injecte).
{
provide: 'ASYNC_CONNECTION',
useFactory: async () => {
const connection = await createConnection(options);
return connection;
},
}
Astuce Apprenez-en plus sur la syntaxe des fournisseurs personnalisés ici.
Injection#
Les fournisseurs asynchrones sont injectés dans d'autres composants par leurs jetons, comme n'importe quel autre fournisseur. Dans l'exemple ci-dessus, vous utiliseriez la construction @Inject('ASYNC_CONNECTION').
Exemple#
The TypeORM recipe présente un exemple plus substantiel de fournisseur asynchrone.

