Sobes.tech
Junior

Mit csinál a Promise.all?

sobes.tech MI

Válasz az MI-től

A Promise.all elfogad egy iterálható objektumot ígéretekkel (például egy tömböt), és egy új ígéretet ad vissza. Ez az új ígéret teljesül akkor, amikor minden átadott ígéret sikeresen teljesül. Az eredmény egy értékekből álló tömb lesz, amelyek megfelelnek az egyes átadott ígéretek eredményeinek, ugyanabban a sorrendben.

Ha legalább egy az átadott ígéretek közül elutasításra kerül, akkor a Promise.all azonnal elutasításra kerül az első elutasított ígéret okával.

Alkalmazások:

  • Több aszinkron művelet egyidejű végrehajtása, amelyek nem függenek egymástól.
  • Várakozás egy műveletsor befejezésére, mielőtt a következő lépésre lépne.

Példa:

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

  try {
    // Adatok egyidejű betöltése több URL-ről
    const responses = await Promise.all(urls.map(url => fetch(url)));

    // Minden válasz sikerességének ellenőrzése
    for (const response of responses) {
      if (!response.ok) {
        // Ha egy válasz nem sikeres, hibát dobunk
        throw new Error(`HTTP hiba! státusz: ${response.status}`);
      }
    }

    // Minden válasz JSON-ra történő elemzése
    const jsonData = await Promise.all(responses.map(response => response.json()));

    // Most a jsonData egy tömb, amely az összes kérés eredményeit tartalmazza
    console.log(jsonData);

  } catch (error) {
    // Hiba kezelése, ha valamelyik ígéret elutasításra került (Fetch vagy JSON.parse)
    console.error('Hiba az adatok lekérése során:', error);
  }
}

fetchData();