Promises en JavaScript

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

Quelle est la principale raison d'utiliser les Promises en JavaScript plutôt que les callbacks traditionnels?

  • Les Promises sont plus performantes que les callbacks.
  • Les Promises sont plus faciles à implémenter que les callbacks.
  • Les Promises sont compatibles avec tous les navigateurs, contrairement aux callbacks.
  • Les Promises offrent une meilleure gestion des erreurs et évitent le 'callback hell'. (correct)

Dans quel état une Promise se trouve-t-elle immédiatement après sa création?

  • Résolue (fulfilled)
  • En attente (pending) (correct)
  • Terminée (completed)
  • Rejetée (rejected)

Quelle est la fonction de la méthode then d'une Promise?

  • Annuler l'exécution de la Promise.
  • Définir le délai d'attente de la Promise.
  • Attacher un gestionnaire qui sera exécuté lorsque la Promise est résolue. (correct)
  • Attacher un gestionnaire qui sera exécuté lorsque la Promise est rejetée.

Comment gérez-vous les erreurs dans une chaîne de Promises?

<p>En utilisant la méthode <code>catch</code> à la fin de la chaîne. (C)</p> Signup and view all the answers

Quelle méthode statique de Promise est utilisée pour attendre que toutes les Promises d'un tableau soient résolues?

<p>Promise.all() (B)</p> Signup and view all the answers

Quelle méthode statique de Promise est utilisée pour obtenir la valeur de la première Promise résolue ou rejetée dans un tableau?

<p>Promise.race() (C)</p> Signup and view all the answers

Quel est l'avantage principal de l'utilisation de async/await par rapport aux Promises traditionnelles?

<p><code>async/await</code> simplifie la syntaxe et rend le code asynchrone plus lisible. (A)</p> Signup and view all the answers

Si une fonction async ne contient pas le mot-clé await, que se passe-t-il?

<p>La fonction se comporte comme une fonction synchrone normale et retourne une Promise résolue avec la valeur de retour. (A)</p> Signup and view all the answers

Dans un bloc try...catch à l'intérieur d'une fonction async, quelle est la fonction du bloc catch?

<p>Gérer les erreurs qui se produisent lors de l'attente des Promises avec <code>await</code> dans le bloc <code>try</code>. (C)</p> Signup and view all the answers

Quelle est la différence principale entre Promise.all() et Promise.allSettled()?

<p><code>Promise.all()</code> retourne une Promise qui se résout uniquement si toutes les Promises sont résolues, tandis que <code>Promise.allSettled()</code> attend que toutes les Promises soient réglées, qu'elles soient résolues ou rejetées. (C)</p> Signup and view all the answers

Comment pouvez-vous empêcher le 'callback hell' lors de l'utilisation de callbacks traditionnels?

<p>En modularisant le code en petites fonctions nommées et en évitant l'imbrication profonde. (A)</p> Signup and view all the answers

Quelle est la fonction de la fonction resolve passée au constructeur Promise?

<p>Indiquer que l'opération asynchrone s'est terminée avec succès. (C)</p> Signup and view all the answers

Si une erreur se produit dans un then d'une chaîne de Promises et qu'il n'y a pas de catch immédiatement après, où l'erreur sera-t-elle capturée?

<p>L'erreur sera capturée par le <code>catch</code> le plus proche dans la chaîne. (B)</p> Signup and view all the answers

Quelle est la principale différence entre les Promises et les Observables (RxJS)?

<p>Les Observables sont plus adaptées aux flux de données multiples, tandis que les Promises sont conçues pour une seule valeur. (C)</p> Signup and view all the answers

Dans quel scénario l'utilisation de Promise.all() est-elle la plus appropriée?

<p>Lorsque vous avez besoin d'exécuter plusieurs opérations asynchrones en parallèle et que vous devez attendre que toutes soient terminées. (D)</p> Signup and view all the answers

Quelle est la fonction de la méthode catch dans une chaîne de Promises?

<p>Attraper et gérer les erreurs qui se produisent dans les Promises précédentes de la chaîne. (C)</p> Signup and view all the answers

Quels sont les avantages de l'utilisation du chaînage de Promises?

<p>Toutes les réponses ci-dessus. (A)</p> Signup and view all the answers

Si une Promise est déjà résolue, que se passe-t-il si vous appelez la méthode then sur cette Promise?

<p>La fonction passée à <code>then</code> est exécutée immédiatement avec la valeur de résolution. (B)</p> Signup and view all the answers

Pourquoi est-il important de gérer les erreurs dans les chaînes de Promises?

<p>Toutes les réponses ci-dessus. (C)</p> Signup and view all the answers

Quelle est la principale utilisation de Promise.resolve(valeur)?

<p>Créer une Promise qui sera résolue avec la valeur donnée. (A)</p> Signup and view all the answers

Quelle est la principale utilisation de Promise.reject(raison)?

<p>Créer une Promise qui sera rejetée avec la raison donnée. (D)</p> Signup and view all the answers

Quelle est la relation entre async et await?

<p><code>async</code> est utilisé pour définir une fonction asynchrone, et <code>await</code> est utilisé pour attendre la résolution d'une Promise à l'intérieur de cette fonction. (D)</p> Signup and view all the answers

Quelle est la meilleure pratique pour gérer les erreurs lors de l'utilisation de async/await?

<p>Utiliser un bloc <code>try...catch</code> pour envelopper les appels <code>await</code>. (B)</p> Signup and view all the answers

Lors de l'utilisation de Promises, comment pouvez-vous exécuter une fonction une fois que la Promise est soit résolue, soit rejetée?

<p>En utilisant la méthode <code>finally</code>. (B)</p> Signup and view all the answers

Dans le contexte des Promises, qu'est-ce qu'un 'executor'?

<p>Une fonction qui est exécutée immédiatement lors de la création de la Promise et qui contient la logique asynchrone. (B)</p> Signup and view all the answers

Comment pouvez-vous transformer la valeur résolue d'une Promise avant de la passer au then suivant dans une chaîne?

<p>En retournant une nouvelle valeur dans la fonction passée à <code>then</code>. (C)</p> Signup and view all the answers

Quels sont les avantages de préférer async/await aux Promises pour la gestion asynchrone en JavaScript?

<p>Toutes les réponses ci-dessus. (C)</p> Signup and view all the answers

Si vous avez une fonction asynchrone qui doit effectuer plusieurs opérations qui dépendent l'une de l'autre, quelle approche est la plus appropriée?

<p>Définir une fonction <code>async</code> et utiliser <code>await</code> pour séquencer les opérations et <code>try...catch</code> pour la gestion des erreurs. (B)</p> Signup and view all the answers

Flashcards

¿Qué son las Promises?

Un medio para gestionar operaciones asíncronas en JavaScript, ofreciendo una alternativa a los callbacks tradicionales.

Estados de una Promise

Una Promise puede estar en estado pendiente, resuelta (éxito) o rechazada (fallo).

¿Cómo se crea una Promise?

Se crea usando el constructor Promise, que toma una función 'executor' con resolve y reject.

¿Qué hace el método then?

Se usa para adjuntar un gestor que se ejecuta cuando la Promise se resuelve.

Signup and view all the flashcards

¿Qué hace el método catch?

Se usa para adjuntar un gestor que se ejecuta cuando la Promise se rechaza.

Signup and view all the flashcards

¿Qué es el encadenamiento de Promises?

Permite ejecutar una serie de operaciones asíncronas de manera secuencial.

Signup and view all the flashcards

¿Cómo se gestionan errores en Promises?

Añade un bloque catch al final de la cadena para capturar errores en las Promises anteriores.

Signup and view all the flashcards

¿Qué hace Promise.all(iterable)?

Retorna una Promise que se resuelve cuando todas las Promises del iterable se resuelven.

Signup and view all the flashcards

¿Qué hace Promise.race(iterable)?

Retorna una Promise que se resuelve o rechaza tan pronto como una Promise del iterable se resuelve o se rechaza.

Signup and view all the flashcards

¿Qué hace Promise.resolve(valeur)?

Retorna una Promise que se resuelve con la 'valeur' dada.

Signup and view all the flashcards

¿Qué hace Promise.reject(raison)?

Retorna una Promise que se rechaza con la 'raison' dada.

Signup and view all the flashcards

¿Qué es async/await?

Ampliamente usado para hacer el código asíncrono más legible y fácil de entender.

Signup and view all the flashcards

¿Ventajas de Promises vs. Callbacks?

Ofrecen mejor gestión de errores y evitan el 'callback hell'.

Signup and view all the flashcards

¿Qué hace la palabra clave async?

Definir una función asíncrona.

Signup and view all the flashcards

¿Qué hace la palabra clave await?

Pausar la ejecución de una función asíncrona hasta que una Promise se resuelva.

Signup and view all the flashcards

Study Notes

  • Les Promises servent à gérer les opérations asynchrones en JavaScript, proposant une alternative aux callbacks traditionnels.
  • Une Promise représente une valeur qui sera éventuellement disponible.

État des Promises

  • Une Promise se trouve dans l'un des trois états suivants:
    • En attente (pending): L'état initial, ni résolue ni rejetée.
    • Résolue (fulfilled): L'opération asynchrone s'est terminée avec succès.
    • Rejetée (rejected): L'opération asynchrone a échoué.

Création d'une Promise

  • Utiliser le constructeur Promise pour créer une Promise.
  • Le constructeur Promise reçoit une fonction "executor" comme argument.
  • La fonction executor prend deux arguments: resolve et reject, qui sont eux-mêmes des fonctions.
  • La fonction resolve est appelée pour indiquer que l'opération a réussi.
  • La fonction reject est appelée pour indiquer que l'opération a échoué.

Exemple de création d'une Promise

  • Voici une Promise qui est résolue après un délai:
const maPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("Succès!");
  }, 2000);
});
  • Exemple d'une Promise qui est rejetée après un délai:
const maPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    reject("Échec!");
  }, 2000);
});

Utilisation des Promises

  • Les Promises fournissent une méthode then pour attacher des gestionnaires qui seront exécutés lorsque la Promise est résolue.
  • La méthode then prend une fonction comme argument, qui sera appelée avec la valeur de résolution de la Promise.
  • Les Promises fournissent une méthode catch pour attacher des gestionnaires qui seront exécutés lorsque la Promise est rejetée.
  • La méthode catch prend une fonction comme argument, qui sera appelée avec la raison du rejet de la Promise.

Exemple d'utilisation de then et catch

maPromise
  .then((valeur) => {
    console.log("Résultat:", valeur); // Affiche "Résultat: Succès!" après 2 secondes
  })
  .catch((raison) => {
    console.error("Erreur:", raison); // Affiche "Erreur: Échec!" si la Promise est rejetée
  });

Chaînage des Promises

  • Les Promises peuvent être chaînées, afin d'exécuter une série d'opérations asynchrones de manière séquentielle.
  • Chaque appel à then retourne une nouvelle Promise, ce qui permet de chaîner les appels.
  • Si une fonction dans un then retourne une Promise, le then suivant attendra que cette Promise soit résolue avant d'exécuter son gestionnaire.

Exemple de chaînage de Promises

const promesse1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(10);
  }, 1000);
});

promesse1
  .then((valeur) => {
    console.log("Première valeur:", valeur); // Affiche "Première valeur: 10" après 1 seconde
    return valeur * 2;
  })
  .then((valeur) => {
    console.log("Deuxième valeur:", valeur); // Affiche "Deuxième valeur: 20" après 1 seconde
    return valeur + 5;
  })
  .then((valeur) => {
    console.log("Troisième valeur:", valeur); // Affiche "Troisième valeur: 25" après 1 seconde
  });

Gestion des erreurs dans les chaînes de Promises

  • Il est important de gérer les erreurs dans les chaînes de Promises pour éviter que les erreurs ne soient pas détectées.
  • Une méthode catch peut être ajoutée à la fin de la chaîne pour capturer toutes les erreurs qui se produisent dans les Promises précédentes.
  • Si une erreur se produit dans un then, elle sera transmise au catch le plus proche dans la chaîne.

Exemple de gestion des erreurs

const promesseQuiPeutEchouer = new Promise((resolve, reject) => {
  setTimeout(() => {
    const random = Math.random();
    if (random > 0.5) {
      resolve("Succès!");
    } else {
      reject("Échec!");
    }
  }, 1000);
});

promesseQuiPeutEchouer
  .then((valeur) => {
    console.log("Valeur:", valeur);
    return valeur.toUpperCase();
  })
  .then((valeur) => {
    console.log("Valeur en majuscules:", valeur);
  })
  .catch((erreur) => {
    console.error("Erreur:", erreur); // Capture l'erreur si la Promise est rejetée ou si une erreur se produit dans un `then`
  });

Méthodes statiques des Promises

  • Promise.all(iterable): Prend un iterable de Promises en entrée et retourne une seule Promise qui se résout lorsque toutes les Promises de l'iterable sont résolues. Elle est rejetée si au moins une des Promises est rejetée.
  • Promise.race(iterable): Prend un iterable de Promises en entrée et retourne une Promise qui se résout ou se rejette dès que la première Promise de l'iterable est résolue ou rejetée.
  • Promise.resolve(valeur): Retourne une Promise qui est résolue avec la valeur donnée.
  • Promise.reject(raison): Retourne une Promise qui est rejetée avec la raison donnée.

Exemple d'utilisation de Promise.all

const promesse1 = Promise.resolve(1);
const promesse2 = new Promise((resolve) => setTimeout(() => resolve(2), 1000));
const promesse3 = Promise.resolve(3);

Promise.all([promesse1, promesse2, promesse3])
  .then((valeurs) => {
    console.log("Valeurs:", valeurs); // Affiche "Valeurs: [1, 2, 3]" après 1 seconde
  })
  .catch((erreur) => {
    console.error("Erreur:", erreur);
  });

Exemple d'utilisation de Promise.race

const promesseRapide = new Promise((resolve) => setTimeout(() => resolve("Rapide!"), 500));
const promesseLente = new Promise((resolve) => setTimeout(() => resolve("Lent!"), 1000));

Promise.race([promesseRapide, promesseLente])
  .then((valeur) => {
    console.log("Valeur:", valeur); // Affiche "Valeur: Rapide!" après 0.5 seconde
  })
  .catch((erreur) => {
    console.error("Erreur:", erreur);
  });

Avantages des Promises

  • Améliorent la lisibilité du code asynchrone par rapport aux callbacks.
  • Facilitent la gestion des erreurs.
  • Permettent le chaînage des opérations asynchrones.
  • Fournissent des méthodes statiques utiles pour gérer plusieurs Promises simultanément.

Alternatives aux Promises

  • Async/Await: Une syntaxe plus récente et plus concise pour travailler avec les opérations asynchrones, basée sur les Promises.
  • Callbacks: La méthode traditionnelle pour gérer les opérations asynchrones en JavaScript, mais peut conduire au "callback hell" si elle est mal gérée.
  • Observables (RxJS): Un modèle plus puissant et flexible pour gérer les flux de données asynchrones.

Async/Await

  • async et await sont des mots-clés qui simplifient l'utilisation des Promises.
  • async est utilisé pour définir une fonction asynchrone.
  • await est utilisé à l'intérieur d'une fonction async pour attendre la résolution d'une Promise.
  • L'utilisation de async/await rend le code asynchrone plus lisible et plus facile à comprendre.

Exemple d'utilisation d'async/await

async function exempleAsync() {
  try {
    const resultat = await maPromise;
    console.log("Résultat:", resultat);
    const resultatMajuscule = await Promise.resolve(resultat.toUpperCase());
    console.log("Résultat en majuscules:", resultatMajuscule);
  } catch (erreur) {
    console.error("Erreur:", erreur);
  }
}

exempleAsync();

Différences entre Promises et Callbacks

  • Les Promises offrent une meilleure gestion des erreurs grâce à la méthode catch.
  • Les Promises évitent le "callback hell" en permettant le chaînage des opérations asynchrones.
  • Les Promises sont plus faciles à lire et à maintenir que les callbacks, surtout dans les opérations asynchrones complexes.

Bonnes pratiques pour l'utilisation des Promises

  • Toujours gérer les erreurs en utilisant catch.
  • Éviter d'imbriquer les Promises autant que possible. Utiliser le chaînage ou async/await pour une meilleure lisibilité.
  • Utiliser Promise.all pour exécuter plusieurs opérations asynchrones en parallèle lorsque l'ordre n'est pas important.
  • Choisir la syntaxe async/await pour un code plus propre et plus facile à comprendre.
  • Documenter clairement le comportement asynchrone du code.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

More Like This

JavaScript Promises Quiz
3 questions
Chaining Promises in JavaScript
6 questions
Promises in JavaScript Overview
45 questions

Promises in JavaScript Overview

FavoriteConstructivism6060 avatar
FavoriteConstructivism6060
Use Quizgecko on...
Browser
Browser