Sobes.tech
Junior

Wozu dient Promise.all?

sobes.tech KI

Antwort von AI

Promise.all akzeptiert ein iterierbares Objekt von Versprechen (z.B. ein Array) und gibt ein neues Versprechen zurück. Dieses neue Versprechen wird erfüllt, wenn alle übergebenen Versprechen erfolgreich erfüllt werden. Das Ergebnis ist ein Array von Werten, die den Ergebnissen jedes der übergebenen Versprechen entsprechen, in der gleichen Reihenfolge.

Wenn mindestens eines der übergebenen Versprechen abgelehnt wird, dann wird Promise.all sofort abgelehnt mit dem Grund der Ablehnung des ersten abgelehnten Versprechens.

Anwendungen:

  • Gleichzeitige Ausführung mehrerer asynchroner Operationen, die voneinander unabhängig sind.
  • Warten auf den Abschluss einer Reihe von Operationen, bevor man zum nächsten Schritt übergeht.

Beispiel:

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

  try {
    // Daten gleichzeitig von mehreren URLs laden
    const responses = await Promise.all(urls.map(url => fetch(url)));

    // Erfolg jeder Antwort überprüfen
    for (const response of responses) {
      if (!response.ok) {
        // Wenn eine Antwort nicht erfolgreich ist, Fehler werfen
        throw new Error(`HTTP-Fehler! Status: ${response.status}`);
      }
    }

    // Alle Antworten in JSON parsen
    const jsonData = await Promise.all(responses.map(response => response.json()));

    // jsonData ist jetzt ein Array der Ergebnisse aller Anfragen
    console.log(jsonData);

  } catch (error) {
    // Fehler behandeln, wenn eine der Promises abgelehnt wurde (Fetch oder JSON.parse)
    console.error('Fehler beim Abrufen der Daten:', error);
  }
}

fetchData();