PR-URL: https://github.com/nodejs/node/pull/35474 Reviewed-By: Ruy Adorno <ruyadorno@github.com> Reviewed-By: Ujjwal Sharma <ryzokuken@disroot.org> Reviewed-By: Ben Coe <bencoe@gmail.com> Reviewed-By: Geoffrey Booth <webmaster@geoffreybooth.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Shelley Vohr <codebytere@gmail.com> Reviewed-By: Guy Bedford <guybedford@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
28 lines
694 B
JavaScript
28 lines
694 B
JavaScript
const allSettled =
|
|
Promise.allSettled ? promises => Promise.allSettled(promises)
|
|
: promises => {
|
|
const reflections = []
|
|
for (let i = 0; i < promises.length; i++) {
|
|
reflections[i] = Promise.resolve(promises[i]).then(value => ({
|
|
status: 'fulfilled',
|
|
value,
|
|
}), reason => ({
|
|
status: 'rejected',
|
|
reason,
|
|
}))
|
|
}
|
|
return Promise.all(reflections)
|
|
}
|
|
|
|
module.exports = promises => allSettled(promises).then(results => {
|
|
let er = null
|
|
const ret = new Array(results.length)
|
|
results.forEach((result, i) => {
|
|
if (result.status === 'rejected')
|
|
throw result.reason
|
|
else
|
|
ret[i] = result.value
|
|
})
|
|
return ret
|
|
})
|