Composition de fonctions asynchrones en chaîne

JavaScriptJavaScriptBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/ToolsandEnvironmentGroup(["Tools and Environment"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/AdvancedConceptsGroup -.-> javascript/async_prog("Asynchronous Programming") javascript/ToolsandEnvironmentGroup -.-> javascript/debugging("Debugging") subgraph Lab Skills javascript/variables -.-> lab-28545{{"Composition de fonctions asynchrones en chaîne"}} javascript/data_types -.-> lab-28545{{"Composition de fonctions asynchrones en chaîne"}} javascript/arith_ops -.-> lab-28545{{"Composition de fonctions asynchrones en chaîne"}} javascript/comp_ops -.-> lab-28545{{"Composition de fonctions asynchrones en chaîne"}} javascript/async_prog -.-> lab-28545{{"Composition de fonctions asynchrones en chaîne"}} javascript/debugging -.-> lab-28545{{"Composition de fonctions asynchrones en chaîne"}} end

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 fonction pipeAsyncFunctions.
  • 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 async et renvoyer via await.
  • La méthode reduce() est utilisée avec Promise.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.