settle.js 425 B

123456789101112131415161718192021
  1. export default function settle (promises) {
  2. const resolutions = []
  3. const rejections = []
  4. function resolved (value) {
  5. resolutions.push(value)
  6. }
  7. function rejected (error) {
  8. rejections.push(error)
  9. }
  10. const wait = Promise.all(
  11. promises.map((promise) => promise.then(resolved, rejected)),
  12. )
  13. return wait.then(() => {
  14. return {
  15. successful: resolutions,
  16. failed: rejections,
  17. }
  18. })
  19. }