Sobes.tech
Junior

La ce folosește Promise.all?

sobes.tech AI

Răspuns de la AI

Promise.all acceptă un obiect iterabil de promisiuni (de exemplu, un array) și returnează o nouă promisiune. Această nouă promisiune se îndeplinește atunci când toate promisiunile transmise sunt resolve cu succes. Rezultatul va fi un array de valori, corespunzătoare rezultatelor fiecărei promisiuni transmise, în aceeași ordine.

Dacă cel puțin unul dintre promisiuni este respins, atunci Promise.all este respins imediat cu motivul respingerii primei promisiuni respinse.

Aplicații:

  • Executarea simultană a mai multor operații asincrone care nu depind unele de altele.
  • Așteptarea finalizării unui set de operații înainte de a trece la pasul următor.

Exemplu:

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

  try {
    // Încărcarea datelor de pe mai multe URL-uri în același timp
    const responses = await Promise.all(urls.map(url => fetch(url)));

    // Verificarea succesului fiecărei răspunsuri
    for (const response of responses) {
      if (!response.ok) {
        // Dacă un răspuns nu are succes, aruncă o eroare
        throw new Error(`Eroare HTTP! status: ${response.status}`);
      }
    }

    // Parsarea tuturor răspunsurilor în JSON
    const jsonData = await Promise.all(responses.map(response => response.json()));

    // Acum jsonData este un array cu rezultatele tuturor solicitărilor
    console.log(jsonData);

  } catch (error) {
    // Gestionarea erorii dacă una dintre promisiuni a fost respinsă (Fetch sau JSON.parse)
    console.error('Eroare la preluarea datelor:', error);
  }
}

fetchData();