Sobes.tech
Middle

// Co se zobrazí v konzoli? const p1 = Promise.resolve(1); const p2 = new Promise((_, reject) => setTimeout(() => reject("Error"), 100)); const p3 = Promise.resolve(3); Promise.all([p1, p2, p3]) .then(console.log) .catch(console.error); Promise.allSettled([p1, p2, p3]).then(console.log);

sobes.tech AI

Odpověď od AI

V konzoli se zobrazí následující:

  1. Volání Promise.all([p1, p2, p3]) skončí chybou, protože p2 je odmítnuto po 100 ms s hlášením "Error". Proto bude v bloku .catch(console.error) zobrazeno:
Error
  1. Volání Promise.allSettled([p1, p2, p3]) se vždy úspěšně dokončí a vrátí pole s výsledky všech slibů, bez ohledu na jejich stav. V konzoli bude zobrazeno pole objektů:
[
  { status: "fulfilled", value: 1 },
  { status: "rejected", reason: "Error" },
  { status: "fulfilled", value: 3 }
]

Tímto způsobem se nejprve v konzoli objeví chyba z Promise.all, a poté pole výsledků z Promise.allSettled.