Sobes.tech
Middle

// Co zostanie wyświetlone w konsoli? 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

Odpowiedź od AI

W konsoli zostanie wyświetlone następujące:

  1. Wywołanie Promise.all([p1, p2, p3]) zakończy się błędem, ponieważ p2 odrzuca się po 100 ms z komunikatem "Error". Dlatego w bloku .catch(console.error) zostanie wyświetlone:
Error
  1. Wywołanie Promise.allSettled([p1, p2, p3]) zawsze kończy się sukcesem, zwracając tablicę z wynikami wszystkich obietnic, niezależnie od ich stanu. W konsoli zostanie wyświetlona tablica obiektów:
[
  { status: "fulfilled", value: 1 },
  { status: "rejected", reason: "Error" },
  { status: "fulfilled", value: 3 }
]

W ten sposób najpierw w konsoli pojawi się błąd z Promise.all, a następnie tablica wyników z Promise.allSettled.