Passer au contenu

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.

Exemple de fournisseur asynchrone
{
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.