function fn1() { return new Promise((resolve, reject) => { setTimeout(() => { resolve(1); }, 1000) }) } function fn2() { return new Promise((resolve, reject) => { setTimeout(() => { reject(2); }, 2000) }) } function main() { let f1e, f2e; let f1 = fn1().catch(err => { f1e = err }); let f2 = fn2().catch(err => { f2e = err }); Promise.all([f1, f2]).then(val => { console.log(val); console.log(f1e); console.log(f2e); }) } main();