Sobes.tech
Junior

Waarvoor is Promise.all?

sobes.tech AI

Antwoord van AI

Promise.all accepteert een iterabel object van beloftes (bijvoorbeeld een array) en retourneert een nieuwe belofte. Deze nieuwe belofte wordt vervuld wanneer alle meegegeven beloftes succesvol worden vervuld. Het resultaat is een array van waarden, overeenkomend met de resultaten van elke meegegeven belofte, in dezelfde volgorde.

Als minstens één van de meegegeven beloftes wordt afgewezen, wordt Promise.all onmiddellijk afgewezen met de reden van de eerste afgewezen belofte.

Toepassingen:

  • Gelijktijdig uitvoeren van meerdere asynchrone operaties die niet van elkaar afhankelijk zijn.
  • Wachten tot een set operaties is voltooid voordat je doorgaat naar de volgende stap.

Voorbeeld:

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

  try {
    // Data gelijktijdig laden van meerdere URL's
    const responses = await Promise.all(urls.map(url => fetch(url)));

    // Controleren of elke reactie succesvol is
    for (const response of responses) {
      if (!response.ok) {
        // Als een reactie niet succesvol is, gooi een fout
        throw new Error(`HTTP-fout! status: ${response.status}`);
      }
    }

    // Alle reacties parseren naar JSON
    const jsonData = await Promise.all(responses.map(response => response.json()));

    // jsonData is nu een array van resultaten van alle verzoeken
    console.log(jsonData);

  } catch (error) {
    // Fout afhandelen als een van de beloftes is afgewezen (Fetch of JSON.parse)
    console.error('Fout bij ophalen data:', error);
  }
}

fetchData();