1const allSettled = 2 Promise.allSettled ? promises => Promise.allSettled(promises) 3 : promises => { 4 const reflections = [] 5 for (let i = 0; i < promises.length; i++) { 6 reflections[i] = Promise.resolve(promises[i]).then(value => ({ 7 status: 'fulfilled', 8 value, 9 }), reason => ({ 10 status: 'rejected', 11 reason, 12 })) 13 } 14 return Promise.all(reflections) 15 } 16 17module.exports = promises => allSettled(promises).then(results => { 18 let er = null 19 const ret = new Array(results.length) 20 results.forEach((result, i) => { 21 if (result.status === 'rejected') 22 throw result.reason 23 else 24 ret[i] = result.value 25 }) 26 return ret 27}) 28