马宇豪
2024-07-16 f591c27b57e2418c9495bc02ae8cfff84d35bc18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
})