The Promise.allSettled() method returns a promise that resolves after all of the given promises have either resolved or rejected, with an array of objects that each describes the outcome of each promise.
you can use @Michael solution just replace Promise.all with
Promise.allSettled
The Promise.allSettled() method returns a promise that resolves after
all of the given promises have either resolved or rejected, with an
array of objects that each describes the outcome of each promise mozilla Doc.
The Promise.all() method returns a single Promise that fulfills when
all of the promises passed as an iterable have been fulfilled or when
the iterable contains no promises. It rejects with the reason of the
first promise that rejects mozilla doc.
module.exports.handler = (event, context, callback) => {
let a = {'a': 'b', 'x': 'foo', 'y': 'bar'};
let b = {'i': 'n'};
let promises = []
Object.keys(a).forEach(ax => {
Object.keys(b).forEach(bx => {
promises.push(validate(ax, bx));
})
})
Promise.allSettled(promises)
.then(results => {
//do stuff with results
})
.catch(error => {
//handle error
})
}
const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'foo'));
const promise3 = Promise.resolve(4);
const promises = [promise1, promise2,promise3];
Promise.allSettled(promises).
then((results) => results.forEach((result) => console.log(result.status)));
// expected output:
// "fulfilled"
// "rejected"
// "fulfilled"