Introduction
Dans ce laboratoire, nous allons explorer le concept de composition de fonctions en programmation asynchrone à l'aide de JavaScript. Nous apprendrons à utiliser la fonction pipeAsyncFunctions pour composer une série de fonctions asynchrones qui peuvent accepter un seul argument et renvoyer une combinaison de valeurs normales, de Promise, ou être async. À la fin de ce laboratoire, vous aurez une compréhension solide de la manière d'utiliser la composition de fonctions pour écrire du code asynchrone plus efficace et lisible.
Comment utiliser les fonctions asynchrones en chaîne en JavaScript
Pour commencer à coder avec JavaScript, ouvrez le Terminal/SSH et tapez node. Une fois que vous êtes familier avec les bases, vous pouvez commencer à travailler avec les fonctions asynchrones.
La fonction pipeAsyncFunctions vous permet d'effectuer une composition de fonctions de gauche à droite avec des fonctions asynchrones. Voici comment elle fonctionne :
- La fonction prend un nombre quelconque de fonctions asynchrones en arguments.
- L'opérateur de répandue (
...) est utilisé pour passer ces fonctions en tant qu'arguments séparés à la fonctionpipeAsyncFunctions. - La fonction résultante peut accepter un nombre quelconque d'arguments, mais chacune des fonctions composées doit accepter un seul argument.
- Les fonctions peuvent renvoyer une combinaison de valeurs normales, de Promesses, ou être
asyncet renvoyer viaawait. - La méthode
reduce()est utilisée avecPromise.prototype.then()pour effectuer la composition de fonctions. - La méthode
reduce()itère sur les fonctions, les exécutant l'une après l'autre et passant le résultat d'une fonction à la suivante. - La Promesse résultante est renvoyée.
Voici un exemple de manière d'utiliser pipeAsyncFunctions pour additionner un nombre :
const sum = pipeAsyncFunctions(
(x) => x + 1,
(x) => new Promise((resolve) => setTimeout(() => resolve(x + 2), 1000)),
(x) => x + 3,
async (x) => (await x) + 4
);
(async () => {
console.log(await sum(5)); // 15 (après une seconde)
})();
Dans cet exemple, sum est composée de quatre fonctions qui ajoutent des valeurs différentes au nombre d'entrée. La valeur finale de sum est le résultat de l'exécution de chaque fonction dans l'ordre, avec un délai d'une seconde pour la deuxième fonction. Le mot clé async est utilisé avec la dernière fonction pour autoriser l'utilisation de await.
En utilisant pipeAsyncFunctions, vous pouvez facilement composer un nombre quelconque de fonctions asynchrones ensemble pour créer une fonctionnalité plus complexe.
Sommaire
Félicitations ! Vous avez terminé le laboratoire sur les fonctions asynchrones en chaîne. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.