function p1() { return new Promise((resolve, reject) => { setTimeout(() => reject("Error in p1"), 1000); }).catch((error) => { console.error(error); }) } function p2() { return new Promise((resolve) => { setTimeout(() => resolve("p2 resolved"), 1000); }); } function pAll() { Promise.all([p2(), p1()]) .then((results) => { console.log("All data resolved:", results); }) .catch((error) => { console.error("Error resolving data:", error); }); } pAll();
function p1() { return new Promise((resolve, reject) => { setTimeout(() => reject("Error in p1"), 1000); }).catch((error) => { console.error(error); }) } function p2() { return new Promise((resolve) => { setTimeout(() => resolve("p2 resolved"), 1000); }); } function pAll() { Promise.all([p2(), p1()]) .then((results) => { console.log("All data resolved:", results); }) .catch((error) => { console.error("Error resolving data:", error); }); } pAll();
First, Error in p1 is logged, then [ 'p2 resolved', undefined ] is logged. Since p1 catches the rejection, it doesn’t propagate to the Promise.all catch handler allowing p2 to resolve. But, since p1 doesn’t return anything, its result is undefined.