Sobes.tech
Junior

À quoi sert Promise.all?

sobes.tech IA

Réponse de l'IA

Promise.all accepte un objet itérable de promesses (par exemple, un tableau) et retourne une nouvelle promesse. Cette nouvelle promesse se résout lorsque toutes les promesses passées sont résolues avec succès. Le résultat sera un tableau de valeurs, correspondant aux résultats de chacune des promesses passées, dans le même ordre.

Si au moins une des promesses passées est rejetée, alors Promise.all est rejetée immédiatement avec la raison du rejet de la première promesse rejetée.

Applications:

  • Exécution simultanée de plusieurs opérations asynchrones qui ne dépendent pas les unes des autres.
  • Attendre la fin d'un ensemble d'opérations avant de passer à l'étape suivante.

Exemple:

async function fetchData() {
  const urls = [
    'https://api.example.com/data1',
    'https://api.example.com/data2',
    'https://api.example.com/data3',
  ];

  try {
    // Charger simultanément des données de plusieurs URL
    const responses = await Promise.all(urls.map(url => fetch(url)));

    // Vérifier le succès de chaque réponse
    for (const response of responses) {
      if (!response.ok) {
        // Si une réponse n'est pas réussie, lancer une erreur
        throw new Error(`HTTP error! status: ${response.status}`);
      }
    }

    // Analyser toutes les réponses en JSON
    const jsonData = await Promise.all(responses.map(response => response.json()));

    // jsonData est maintenant un tableau des résultats de toutes les requêtes
    console.log(jsonData);

  } catch (error) {
    // Gérer l'erreur si une promesse a été rejetée (Fetch ou JSON.parse)
    console.error('Error fetching data:', error);
  }
}

fetchData();