CodeGym /Cours Java /Frontend SELF FR /Fonctions asynchrones

Fonctions asynchrones

Frontend SELF FR
Niveau 43 , Leçon 3
Disponible

4.1 Mot-clé async

Les fonctions asynchrones en JavaScript te permettent d'écrire du code asynchrone qui ressemble et se lit comme du code synchrone. Les mots-clés async et await, introduits dans ECMAScript 2017 (ES8), facilitent le travail avec les promesses et rendent le code plus clair et gérable.

Concepts de base

Le mot-clé async devant la déclaration d'une fonction indique que la fonction est asynchrone. Une fonction asynchrone retourne toujours une promesse, même si elle n'utilise pas explicitement l'opérateur return. Si une fonction retourne une valeur, elle est automatiquement encapsulée dans une promesse contenant cette valeur.

Syntaxe :

    
      async function nom() {
        // code de la fonction
      }
    
  

Exemple :

JavaScript
    
      async function greet() {
        return 'Hello, world!';
      }

      greet().then((message) => {
        console.log(message); // Affichera : Hello, world!
      });
    
  

4.2 Mot-clé await

Le mot-clé await est utilisé à l'intérieur d'une fonction asynchrone pour suspendre son exécution jusqu'à ce que la promesse se réalise. await peut être utilisé uniquement à l'intérieur de fonctions déclarées avec le mot-clé async.

Syntaxe :

    
      let result = await
      promise;
    
  

Exemple :

JavaScript
    
      function delay(ms) {
        return new Promise((resolve) => setTimeout(resolve, ms));
      }

      async function greet() {
        await delay(2000);
        return 'Hello, world!';
      }

      async function displayGreeting() {
        const message = await greet();
        console.log(message); // Affichera : Hello, world! après 2 secondes
      }

      displayGreeting();
    
  

4.3 Exemples d'utilisation de async et await

Exemple 1 : Fonction asynchrone avec plusieurs promesses

JavaScript
    
      function fetchData1() {
        return new Promise((resolve) => setTimeout(() => resolve('Data 1'), 1000));
      }

      function fetchData2() {
        return new Promise((resolve) => setTimeout(() => resolve('Data 2'), 2000));
      }

      async function fetchAllData() {
        const data1 = await fetchData1();
        console.log(data1); // Affichera : Data 1 après 1 seconde

        const data2 = await fetchData2();
        console.log(data2); // Affichera : Data 2 après 2 secondes
      }

      fetchAllData();
    
  

Exemple 2 : Exécution parallèle des opérations asynchrones

Pour exécuter plusieurs opérations asynchrones en parallèle, tu peux utiliser Promise.all() avec await.

JavaScript
    
      function fetchData1() {
        return new Promise((resolve) => setTimeout(() => resolve('Data 1'), 1000));
      }

      function fetchData2() {
        return new Promise((resolve) => setTimeout(() => resolve('Data 2'), 2000));
      }

      async function fetchAllData() {
        const [data1, data2] = await Promise.all([fetchData1(), fetchData2()]);
        console.log(data1); // Affichera : Data 1 après 2 secondes
        console.log(data2); // Affichera : Data 2 après 2 secondes
      }

      fetchAllData();
    
  

Exemple 3 : Gestion des erreurs avec try...catch

Les fonctions asynchrones permettent d'utiliser des blocs try...catch pour gérer les erreurs, ce qui rend le code plus lisible et gérable.

JavaScript
    
      function fetchDataWithError() {
        return new Promise((resolve, reject) => setTimeout(() => reject('Une erreur est survenue'), 1000));
      }

      async function fetchData() {
        try {
          const data = await fetchDataWithError();
          console.log(data);
        } catch (error) {
          console.error('Erreur :', error); // Affichera : Erreur : Une erreur est survenue après 1 seconde
        }
      }

      fetchData();
    
  

Exemple 4 : Utilisation de async et await dans les méthodes de classe

Les fonctions asynchrones peuvent également être utilisées dans les méthodes de classe.

JavaScript
    
      class DataFetcher {
        async fetchData() {
          const data = await new Promise((resolve) => setTimeout(() => resolve('Données récupérées'), 1000));
          return data;
        }
      }

      const fetcher = new DataFetcher();
      fetcher.fetchData().then((data) => {
        console.log(data); // Affichera : Données récupérées après 1 seconde
      });
    
  

Exemple 5 : Itérateurs asynchrones

Les itérateurs asynchrones permettent de travailler avec des flux de données qui arrivent de manière asynchrone.

JavaScript
    
      async function* asyncGenerator() {
        let i = 0;
        while (i < 3) {
          await new Promise((resolve) => setTimeout(resolve, 1000));
          yield i++;
        }
      }

      async function iterateAsyncGenerator() {
        for await (let value of asyncGenerator()) {
          console.log(value); // Affichera 0, 1 et 2 avec un intervalle de 1 seconde
        }
      }

      iterateAsyncGenerator();
    
  
1
Опрос
Asynchronisme,  43 уровень,  3 лекция
недоступен
Asynchronisme
Asynchronisme
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION