Fonctions asynchrones en Promesses

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 apprendre à convertir une fonction asynchrone pour qu'elle renvoie une promesse à l'aide de la fonction promisify. Cela nous permettra d'écrire un code plus propre et plus lisible en évitant les fonctions de rappel. Nous explorerons également l'utilisation de la curry et de l'opérateur rest en JavaScript.


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/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") javascript/ToolsandEnvironmentGroup -.-> javascript/debugging("Debugging") subgraph Lab Skills javascript/variables -.-> lab-28559{{"Fonctions asynchrones en Promesses"}} javascript/data_types -.-> lab-28559{{"Fonctions asynchrones en Promesses"}} javascript/arith_ops -.-> lab-28559{{"Fonctions asynchrones en Promesses"}} javascript/comp_ops -.-> lab-28559{{"Fonctions asynchrones en Promesses"}} javascript/async_prog -.-> lab-28559{{"Fonctions asynchrones en Promesses"}} javascript/spread_rest -.-> lab-28559{{"Fonctions asynchrones en Promesses"}} javascript/debugging -.-> lab-28559{{"Fonctions asynchrones en Promesses"}} end

Fonction promisify

Pour convertir une fonction asynchrone pour qu'elle renvoie une promesse, suivez ces étapes :

  1. Ouvrez le Terminal/SSH et tapez node pour commencer à pratiquer la programmation.
  2. Utilisez la curry pour renvoyer une fonction qui renvoie une Promise qui appelle la fonction d'origine.
  3. Utilisez l'opérateur rest (...) pour passer tous les paramètres.
  4. Si vous utilisez Node 8+, vous pouvez utiliser util.promisify.
  5. Voici un extrait de code d'exemple :
const promisify =
  (func) =>
  (...args) =>
    new Promise((resolve, reject) =>
      func(...args, (err, result) => (err ? reject(err) : resolve(result)))
    );
  1. Pour utiliser cette fonction, définissez la fonction asynchrone et passez-la en tant que paramètre à la fonction promisify. La fonction renvoyée renverra désormais une promesse.
const delay = promisify((d, cb) => setTimeout(cb, d));
delay(2000).then(() => console.log("Hi!")); // La promesse est résolue après 2 s

La fonction delay est un exemple d'une fonction asynchrone qui renvoie désormais une promesse à l'aide de la fonction promisify.

Sommaire

Félicitations ! Vous avez terminé le laboratoire Fonction promisify. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.