UNPKG

core-js

Version:
41 lines (39 loc) 1.32 kB
'use strict'; // `Promise.any` method // https://github.com/tc39/proposal-promise-any var newPromiseCapabilityModule = require('../internals/new-promise-capability'); var perform = require('../internals/perform'); var iterate = require('../internals/iterate'); require('../internals/export')({ target: 'Promise', stat: true }, { any: function any(iterable) { var C = this; var capability = newPromiseCapabilityModule.f(C); var resolve = capability.resolve; var reject = capability.reject; var result = perform(function () { var errors = []; var counter = 0; var remaining = 1; var alreadyResolved = false; iterate(iterable, function (promise) { var index = counter++; var alreadyRejected = false; errors.push(undefined); remaining++; C.resolve(promise).then(function (value) { if (alreadyRejected || alreadyResolved) return; alreadyResolved = true; resolve(value); }, function (e) { if (alreadyRejected || alreadyResolved) return; alreadyRejected = true; errors[index] = e; --remaining || reject(errors); }); }); --remaining || reject(errors); }); if (result.e) reject(result.v); return capability.promise; } });