Fonctions asynchrones en Promesses

Beginner

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

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.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 82%. Il a reçu un taux d'avis positifs de 100% de la part des apprenants.

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.