Sobes.tech
Middle

// Čo sa zobrazí v konzole ? 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

Odpoveď od AI

V konzole sa zobrazí nasledovné:

  1. Volanie Promise.all([p1, p2, p3]) sa skončí chybou, pretože p2 je odmietnuté po 100 ms s hlásením "Error". Preto bude v bloku .catch(console.error) zobrazené:
Error
  1. Volanie Promise.allSettled([p1, p2, p3]) sa vždy úspešne ukončí a vráti pole s výsledkami všetkých sľubov, bez ohľadu na ich stav. V konzole bude zobrazené pole objektov:
[
  { status: "fulfilled", value: 1 },
  { status: "rejected", reason: "Error" },
  { status: "fulfilled", value: 3 }
]

Týmto spôsobom sa najskôr v konzole objaví chyba z Promise.all, a potom pole výsledkov z Promise.allSettled.