Retour au blog

Promises en JavaScript : Maitriser l'Asynchronicite

Salut HaWkers ! L'asynchronicite est l'un des concepts les plus importants en JavaScript, surtout lorsqu'on traite des operations comme les requetes reseau, la lecture de fichiers ou toute autre operation qui peut prendre du temps a se terminer. L'un des outils les plus puissants pour gerer l'asynchronicite en JavaScript sont les Promises. Dans cet article, nous allons explorer ce concept en profondeur.

Une Promise en JavaScript est un objet qui represente une operation qui n'est pas encore terminee, mais qui est attendue dans le futur. Une promise est essentiellement un conteneur pour une valeur qui peut ne pas etre disponible encore, mais le sera a un moment donne dans le futur, ou peut-etre jamais.

Pour creer une nouvelle promise, nous utilisons le constructeur Promise, qui prend une fonction d'executeur comme parametre. La fonction d'executeur est appelee immediatement par le constructeur Promise et recoit deux fonctions comme parametres : resolve et reject. La fonction resolve est appelee lorsque l'operation asynchrone est terminee avec succes, tandis que la fonction reject est appelee s'il y a une erreur.

Voyons un exemple :

const promise = new Promise((resolve, reject) => {
  const operation = Math.random() > 0.5;

  setTimeout(() => {
    if (operation) {
      resolve('Operation terminee avec succes !');
    } else {
      reject(new Error("Il y a eu une erreur dans l'operation."));
    }
  }, 1000);
});

promise
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error(error);
  });

Dans cet exemple, nous creons une nouvelle promise qui se resout ou se rejette apres une seconde, selon le resultat d'une operation aleatoire. Si l'operation reussit, nous appelons la fonction resolve avec un message de succes. Si l'operation echoue, nous appelons la fonction reject avec un objet Error. Nous utilisons la methode then pour gerer le succes et la methode catch pour gerer l'erreur.

Il est important de noter qu'une promise peut etre dans l'un des trois etats : en attente, resolue ou rejetee. Une promise est initialement en attente, puis peut etre resolue avec une valeur ou rejetee avec une raison (generalement une erreur). Une fois qu'une promise est resolue ou rejetee, son etat ne peut pas etre modifie.

Les promises ont egalement une methode finally qui est appelee independamment du fait que la promise soit resolue ou rejetee. Cette methode est generalement utilisee pour le nettoyage ou les operations de finalisation.

A partir d'ES2017, JavaScript offre egalement les mots-cles async et await pour travailler avec les promises de maniere plus lisible et moins sujette aux erreurs. Une fonction marquee avec le mot-cle async retourne toujours une promise, et le mot-cle await ne peut etre utilise qu'a l'interieur d'une fonction async. await met en pause l'execution de la fonction jusqu'a ce que la promise soit resolue ou rejetee.

Voici un exemple utilisant async et await :

const getOperationResult = () => {
  return new Promise((resolve, reject) => {
    const operation = Math.random() > 0.5;

    setTimeout(() => {
      if (operation) {
        resolve('Operation terminee avec succes !');
      } else {
        reject(new Error("Il y a eu une erreur dans l'operation."));
      }
    }, 1000);
  });
};

const processOperation = async () => {
  try {
    const result = await getOperationResult();
    console.log(result);
  } catch (error) {
    console.error(error);
  }
};

processOperation();

Dans cet exemple, nous avons une fonction getOperationResult qui retourne une promise. Ensuite, nous avons une fonction async appelee processOperation qui attend le resultat de la promise en utilisant await puis gere le resultat ou l'erreur.

Les Promises, avec async et await, sont des outils incroyablement utiles pour gerer l'asynchronicite en JavaScript. Ils permettent d'ecrire du code asynchrone de maniere presque identique au code synchrone, rendant le code plus facile a lire et a comprendre.

Maintenant, si vous cherchez a approfondir vos connaissances en JavaScript, ne manquez pas l'article : Map : Comment la Programmation Fonctionnelle peut Transformer vos Donnees en JavaScript.

C'est parti !

Commentaires (0)

Cet article n'a pas encore de commentaires. Soyez le premier!

Ajouter des commentaires