promise
Advanced tools
Comparing version 8.2.0 to 8.3.0-canary-5
@@ -61,12 +61,12 @@ 'use strict'; | ||
} | ||
this._1 = 0; | ||
this._2 = 0; | ||
this._3 = null; | ||
this._4 = null; | ||
this._x = 0; | ||
this._y = 0; | ||
this._z = null; | ||
this._A = null; | ||
if (fn === noop) return; | ||
doResolve(fn, this); | ||
} | ||
Promise._5 = null; | ||
Promise._6 = null; | ||
Promise._7 = noop; | ||
Promise._B = null; | ||
Promise._C = null; | ||
Promise._D = noop; | ||
@@ -90,20 +90,20 @@ Promise.prototype.then = function(onFulfilled, onRejected) { | ||
function handle(self, deferred) { | ||
while (self._2 === 3) { | ||
self = self._3; | ||
while (self._y === 3) { | ||
self = self._z; | ||
} | ||
if (Promise._5) { | ||
Promise._5(self); | ||
if (Promise._B) { | ||
Promise._B(self); | ||
} | ||
if (self._2 === 0) { | ||
if (self._1 === 0) { | ||
self._1 = 1; | ||
self._4 = deferred; | ||
if (self._y === 0) { | ||
if (self._x === 0) { | ||
self._x = 1; | ||
self._A = deferred; | ||
return; | ||
} | ||
if (self._1 === 1) { | ||
self._1 = 2; | ||
self._4 = [self._4, deferred]; | ||
if (self._x === 1) { | ||
self._x = 2; | ||
self._A = [self._A, deferred]; | ||
return; | ||
} | ||
self._4.push(deferred); | ||
self._A.push(deferred); | ||
return; | ||
@@ -116,12 +116,12 @@ } | ||
asap(function() { | ||
var cb = self._2 === 1 ? deferred.onFulfilled : deferred.onRejected; | ||
var cb = self._y === 1 ? deferred.onFulfilled : deferred.onRejected; | ||
if (cb === null) { | ||
if (self._2 === 1) { | ||
resolve(deferred.promise, self._3); | ||
if (self._y === 1) { | ||
resolve(deferred.promise, self._z); | ||
} else { | ||
reject(deferred.promise, self._3); | ||
reject(deferred.promise, self._z); | ||
} | ||
return; | ||
} | ||
var ret = tryCallOne(cb, self._3); | ||
var ret = tryCallOne(cb, self._z); | ||
if (ret === IS_ERROR) { | ||
@@ -154,4 +154,4 @@ reject(deferred.promise, LAST_ERROR); | ||
) { | ||
self._2 = 3; | ||
self._3 = newValue; | ||
self._y = 3; | ||
self._z = newValue; | ||
finale(self); | ||
@@ -164,4 +164,4 @@ return; | ||
} | ||
self._2 = 1; | ||
self._3 = newValue; | ||
self._y = 1; | ||
self._z = newValue; | ||
finale(self); | ||
@@ -171,6 +171,6 @@ } | ||
function reject(self, newValue) { | ||
self._2 = 2; | ||
self._3 = newValue; | ||
if (Promise._6) { | ||
Promise._6(self, newValue); | ||
self._y = 2; | ||
self._z = newValue; | ||
if (Promise._C) { | ||
Promise._C(self, newValue); | ||
} | ||
@@ -180,11 +180,11 @@ finale(self); | ||
function finale(self) { | ||
if (self._1 === 1) { | ||
handle(self, self._4); | ||
self._4 = null; | ||
if (self._x === 1) { | ||
handle(self, self._A); | ||
self._A = null; | ||
} | ||
if (self._1 === 2) { | ||
for (var i = 0; i < self._4.length; i++) { | ||
handle(self, self._4[i]); | ||
if (self._x === 2) { | ||
for (var i = 0; i < self._A.length; i++) { | ||
handle(self, self._A[i]); | ||
} | ||
self._4 = null; | ||
self._A = null; | ||
} | ||
@@ -191,0 +191,0 @@ } |
@@ -19,5 +19,5 @@ 'use strict'; | ||
function valuePromise(value) { | ||
var p = new Promise(Promise._7); | ||
p._2 = 1; | ||
p._3 = value; | ||
var p = new Promise(Promise._D); | ||
p._y = 1; | ||
p._z = value; | ||
return p; | ||
@@ -71,7 +71,7 @@ } | ||
if (val instanceof Promise && val.then === Promise.prototype.then) { | ||
while (val._2 === 3) { | ||
val = val._3; | ||
while (val._y === 3) { | ||
val = val._z; | ||
} | ||
if (val._2 === 1) return res(i, val._3); | ||
if (val._2 === 2) reject(val._3); | ||
if (val._y === 1) return res(i, val._z); | ||
if (val._y === 2) reject(val._z); | ||
val.then(function (val) { | ||
@@ -145,1 +145,45 @@ res(i, val); | ||
}; | ||
function getAggregateError(errors){ | ||
if(typeof AggregateError === 'function'){ | ||
return new AggregateError(errors,'All promises were rejected'); | ||
} | ||
var error = new Error('All promises were rejected'); | ||
error.name = 'AggregateError'; | ||
error.errors = errors; | ||
return error; | ||
} | ||
Promise.any = function promiseAny(values) { | ||
return new Promise(function(resolve, reject) { | ||
var promises = iterableToArray(values); | ||
var hasResolved = false; | ||
var rejectionReasons = []; | ||
function resolveOnce(value) { | ||
if (!hasResolved) { | ||
hasResolved = true; | ||
resolve(value); | ||
} | ||
} | ||
function rejectionCheck(reason) { | ||
rejectionReasons.push(reason); | ||
if (rejectionReasons.length === promises.length) { | ||
reject(getAggregateError(rejectionReasons)); | ||
} | ||
} | ||
if(promises.length === 0){ | ||
reject(getAggregateError(rejectionReasons)); | ||
} else { | ||
promises.forEach(function(value){ | ||
Promise.resolve(value).then(resolveOnce, rejectionCheck); | ||
}); | ||
} | ||
}); | ||
}; |
@@ -15,4 +15,4 @@ 'use strict'; | ||
enabled = false; | ||
Promise._5 = null; | ||
Promise._6 = null; | ||
Promise._B = null; | ||
Promise._C = null; | ||
} | ||
@@ -28,23 +28,23 @@ | ||
var rejections = {}; | ||
Promise._5 = function (promise) { | ||
Promise._B = function (promise) { | ||
if ( | ||
promise._2 === 2 && // IS REJECTED | ||
rejections[promise._8] | ||
promise._y === 2 && // IS REJECTED | ||
rejections[promise._E] | ||
) { | ||
if (rejections[promise._8].logged) { | ||
onHandled(promise._8); | ||
if (rejections[promise._E].logged) { | ||
onHandled(promise._E); | ||
} else { | ||
clearTimeout(rejections[promise._8].timeout); | ||
clearTimeout(rejections[promise._E].timeout); | ||
} | ||
delete rejections[promise._8]; | ||
delete rejections[promise._E]; | ||
} | ||
}; | ||
Promise._6 = function (promise, err) { | ||
if (promise._1 === 0) { // not yet handled | ||
promise._8 = id++; | ||
rejections[promise._8] = { | ||
Promise._C = function (promise, err) { | ||
if (promise._x === 0) { // not yet handled | ||
promise._E = id++; | ||
rejections[promise._E] = { | ||
displayId: null, | ||
error: err, | ||
timeout: setTimeout( | ||
onUnhandled.bind(null, promise._8), | ||
onUnhandled.bind(null, promise._E), | ||
// For reference errors and type errors, this almost always | ||
@@ -51,0 +51,0 @@ // means the programmer made a mistake, so log them after just |
@@ -20,4 +20,4 @@ 'use strict'; | ||
Promise.prototype.getValue = function () { | ||
if (this._2 === 3) { | ||
return this._3.getValue(); | ||
if (this._y === 3) { | ||
return this._z.getValue(); | ||
} | ||
@@ -29,8 +29,8 @@ | ||
return this._3; | ||
return this._z; | ||
}; | ||
Promise.prototype.getReason = function () { | ||
if (this._2 === 3) { | ||
return this._3.getReason(); | ||
if (this._y === 3) { | ||
return this._z.getReason(); | ||
} | ||
@@ -42,14 +42,14 @@ | ||
return this._3; | ||
return this._z; | ||
}; | ||
Promise.prototype.getState = function () { | ||
if (this._2 === 3) { | ||
return this._3.getState(); | ||
if (this._y === 3) { | ||
return this._z.getState(); | ||
} | ||
if (this._2 === -1 || this._2 === -2) { | ||
if (this._y === -1 || this._y === -2) { | ||
return 0; | ||
} | ||
return this._2; | ||
return this._y; | ||
}; | ||
@@ -56,0 +56,0 @@ }; |
@@ -63,3 +63,18 @@ /** | ||
/** | ||
* The any function returns a promise that is fulfilled by the first given promise to be fulfilled, or rejected with an AggregateError containing an array of rejection reasons if all of the given promises are rejected. It resolves all elements of the passed iterable to promises as it runs this algorithm. | ||
* @param values An array or iterable of Promises. | ||
* @returns A new Promise. | ||
*/ | ||
any<T extends readonly unknown[] | []>(values: T): Promise<Awaited<T[number]>>; | ||
/** | ||
* The any function returns a promise that is fulfilled by the first given promise to be fulfilled, or rejected with an AggregateError containing an array of rejection reasons if all of the given promises are rejected. It resolves all elements of the passed iterable to promises as it runs this algorithm. | ||
* @param values An array or iterable of Promises. | ||
* @returns A new Promise. | ||
*/ | ||
any<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>> | ||
/** | ||
* Creates a Promise that is resolved with an array of results when all | ||
@@ -66,0 +81,0 @@ * of the provided Promises resolve or reject. |
@@ -61,12 +61,12 @@ 'use strict'; | ||
} | ||
this._1 = 0; | ||
this._2 = 0; | ||
this._3 = null; | ||
this._4 = null; | ||
this._x = 0; | ||
this._y = 0; | ||
this._z = null; | ||
this._A = null; | ||
if (fn === noop) return; | ||
doResolve(fn, this); | ||
} | ||
Promise._5 = null; | ||
Promise._6 = null; | ||
Promise._7 = noop; | ||
Promise._B = null; | ||
Promise._C = null; | ||
Promise._D = noop; | ||
@@ -90,20 +90,20 @@ Promise.prototype.then = function(onFulfilled, onRejected) { | ||
function handle(self, deferred) { | ||
while (self._2 === 3) { | ||
self = self._3; | ||
while (self._y === 3) { | ||
self = self._z; | ||
} | ||
if (Promise._5) { | ||
Promise._5(self); | ||
if (Promise._B) { | ||
Promise._B(self); | ||
} | ||
if (self._2 === 0) { | ||
if (self._1 === 0) { | ||
self._1 = 1; | ||
self._4 = deferred; | ||
if (self._y === 0) { | ||
if (self._x === 0) { | ||
self._x = 1; | ||
self._A = deferred; | ||
return; | ||
} | ||
if (self._1 === 1) { | ||
self._1 = 2; | ||
self._4 = [self._4, deferred]; | ||
if (self._x === 1) { | ||
self._x = 2; | ||
self._A = [self._A, deferred]; | ||
return; | ||
} | ||
self._4.push(deferred); | ||
self._A.push(deferred); | ||
return; | ||
@@ -116,12 +116,12 @@ } | ||
asap(function() { | ||
var cb = self._2 === 1 ? deferred.onFulfilled : deferred.onRejected; | ||
var cb = self._y === 1 ? deferred.onFulfilled : deferred.onRejected; | ||
if (cb === null) { | ||
if (self._2 === 1) { | ||
resolve(deferred.promise, self._3); | ||
if (self._y === 1) { | ||
resolve(deferred.promise, self._z); | ||
} else { | ||
reject(deferred.promise, self._3); | ||
reject(deferred.promise, self._z); | ||
} | ||
return; | ||
} | ||
var ret = tryCallOne(cb, self._3); | ||
var ret = tryCallOne(cb, self._z); | ||
if (ret === IS_ERROR) { | ||
@@ -154,4 +154,4 @@ reject(deferred.promise, LAST_ERROR); | ||
) { | ||
self._2 = 3; | ||
self._3 = newValue; | ||
self._y = 3; | ||
self._z = newValue; | ||
finale(self); | ||
@@ -164,4 +164,4 @@ return; | ||
} | ||
self._2 = 1; | ||
self._3 = newValue; | ||
self._y = 1; | ||
self._z = newValue; | ||
finale(self); | ||
@@ -171,6 +171,6 @@ } | ||
function reject(self, newValue) { | ||
self._2 = 2; | ||
self._3 = newValue; | ||
if (Promise._6) { | ||
Promise._6(self, newValue); | ||
self._y = 2; | ||
self._z = newValue; | ||
if (Promise._C) { | ||
Promise._C(self, newValue); | ||
} | ||
@@ -180,11 +180,11 @@ finale(self); | ||
function finale(self) { | ||
if (self._1 === 1) { | ||
handle(self, self._4); | ||
self._4 = null; | ||
if (self._x === 1) { | ||
handle(self, self._A); | ||
self._A = null; | ||
} | ||
if (self._1 === 2) { | ||
for (var i = 0; i < self._4.length; i++) { | ||
handle(self, self._4[i]); | ||
if (self._x === 2) { | ||
for (var i = 0; i < self._A.length; i++) { | ||
handle(self, self._A[i]); | ||
} | ||
self._4 = null; | ||
self._A = null; | ||
} | ||
@@ -191,0 +191,0 @@ } |
@@ -19,5 +19,5 @@ 'use strict'; | ||
function valuePromise(value) { | ||
var p = new Promise(Promise._7); | ||
p._2 = 1; | ||
p._3 = value; | ||
var p = new Promise(Promise._D); | ||
p._y = 1; | ||
p._z = value; | ||
return p; | ||
@@ -71,7 +71,7 @@ } | ||
if (val instanceof Promise && val.then === Promise.prototype.then) { | ||
while (val._2 === 3) { | ||
val = val._3; | ||
while (val._y === 3) { | ||
val = val._z; | ||
} | ||
if (val._2 === 1) return res(i, val._3); | ||
if (val._2 === 2) reject(val._3); | ||
if (val._y === 1) return res(i, val._z); | ||
if (val._y === 2) reject(val._z); | ||
val.then(function (val) { | ||
@@ -145,1 +145,45 @@ res(i, val); | ||
}; | ||
function getAggregateError(errors){ | ||
if(typeof AggregateError === 'function'){ | ||
return new AggregateError(errors,'All promises were rejected'); | ||
} | ||
var error = new Error('All promises were rejected'); | ||
error.name = 'AggregateError'; | ||
error.errors = errors; | ||
return error; | ||
} | ||
Promise.any = function promiseAny(values) { | ||
return new Promise(function(resolve, reject) { | ||
var promises = iterableToArray(values); | ||
var hasResolved = false; | ||
var rejectionReasons = []; | ||
function resolveOnce(value) { | ||
if (!hasResolved) { | ||
hasResolved = true; | ||
resolve(value); | ||
} | ||
} | ||
function rejectionCheck(reason) { | ||
rejectionReasons.push(reason); | ||
if (rejectionReasons.length === promises.length) { | ||
reject(getAggregateError(rejectionReasons)); | ||
} | ||
} | ||
if(promises.length === 0){ | ||
reject(getAggregateError(rejectionReasons)); | ||
} else { | ||
promises.forEach(function(value){ | ||
Promise.resolve(value).then(resolveOnce, rejectionCheck); | ||
}); | ||
} | ||
}); | ||
}; |
@@ -15,4 +15,4 @@ 'use strict'; | ||
enabled = false; | ||
Promise._5 = null; | ||
Promise._6 = null; | ||
Promise._B = null; | ||
Promise._C = null; | ||
} | ||
@@ -28,23 +28,23 @@ | ||
var rejections = {}; | ||
Promise._5 = function (promise) { | ||
Promise._B = function (promise) { | ||
if ( | ||
promise._2 === 2 && // IS REJECTED | ||
rejections[promise._8] | ||
promise._y === 2 && // IS REJECTED | ||
rejections[promise._E] | ||
) { | ||
if (rejections[promise._8].logged) { | ||
onHandled(promise._8); | ||
if (rejections[promise._E].logged) { | ||
onHandled(promise._E); | ||
} else { | ||
clearTimeout(rejections[promise._8].timeout); | ||
clearTimeout(rejections[promise._E].timeout); | ||
} | ||
delete rejections[promise._8]; | ||
delete rejections[promise._E]; | ||
} | ||
}; | ||
Promise._6 = function (promise, err) { | ||
if (promise._1 === 0) { // not yet handled | ||
promise._8 = id++; | ||
rejections[promise._8] = { | ||
Promise._C = function (promise, err) { | ||
if (promise._x === 0) { // not yet handled | ||
promise._E = id++; | ||
rejections[promise._E] = { | ||
displayId: null, | ||
error: err, | ||
timeout: setTimeout( | ||
onUnhandled.bind(null, promise._8), | ||
onUnhandled.bind(null, promise._E), | ||
// For reference errors and type errors, this almost always | ||
@@ -51,0 +51,0 @@ // means the programmer made a mistake, so log them after just |
@@ -20,4 +20,4 @@ 'use strict'; | ||
Promise.prototype.getValue = function () { | ||
if (this._2 === 3) { | ||
return this._3.getValue(); | ||
if (this._y === 3) { | ||
return this._z.getValue(); | ||
} | ||
@@ -29,8 +29,8 @@ | ||
return this._3; | ||
return this._z; | ||
}; | ||
Promise.prototype.getReason = function () { | ||
if (this._2 === 3) { | ||
return this._3.getReason(); | ||
if (this._y === 3) { | ||
return this._z.getReason(); | ||
} | ||
@@ -42,14 +42,14 @@ | ||
return this._3; | ||
return this._z; | ||
}; | ||
Promise.prototype.getState = function () { | ||
if (this._2 === 3) { | ||
return this._3.getState(); | ||
if (this._y === 3) { | ||
return this._z.getState(); | ||
} | ||
if (this._2 === -1 || this._2 === -2) { | ||
if (this._y === -1 || this._y === -2) { | ||
return 0; | ||
} | ||
return this._2; | ||
return this._y; | ||
}; | ||
@@ -56,0 +56,0 @@ }; |
{ | ||
"name": "promise", | ||
"version": "8.2.0", | ||
"version": "8.3.0-canary-5", | ||
"description": "Bare bones Promises/A+ implementation", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -144,2 +144,16 @@ <a href="https://promisesaplus.com/"><img src="https://promisesaplus.com/assets/logo-small.png" align="right" /></a> | ||
#### Promise.any(array) | ||
Returns a single promise that fulfills as soon as any of the promises in the iterable fulfills, with the value of the fulfilled promise. If no promises in the iterable fulfill (if all of the given promises are rejected), then the returned promise is rejected with an `AggregateError` | ||
```js | ||
var rejected = Promise.reject(0); | ||
var first = new Promise(function (resolve){ setTimeout(resolve, 100, 'quick') }); | ||
var second = new Promise(function (resolve){ setTimeout(resolve, 500, 'slow') }); | ||
var promises = [rejected, first, second]; | ||
Promise.any(promises) // => succeeds with `quick` | ||
``` | ||
#### Promise.allSettled(array) | ||
@@ -146,0 +160,0 @@ |
@@ -61,12 +61,12 @@ 'use strict'; | ||
} | ||
this._1 = 0; | ||
this._2 = 0; | ||
this._3 = null; | ||
this._4 = null; | ||
this._x = 0; | ||
this._y = 0; | ||
this._z = null; | ||
this._A = null; | ||
if (fn === noop) return; | ||
doResolve(fn, this); | ||
} | ||
Promise._5 = null; | ||
Promise._6 = null; | ||
Promise._7 = noop; | ||
Promise._B = null; | ||
Promise._C = null; | ||
Promise._D = noop; | ||
@@ -90,20 +90,20 @@ Promise.prototype.then = function(onFulfilled, onRejected) { | ||
function handle(self, deferred) { | ||
while (self._2 === 3) { | ||
self = self._3; | ||
while (self._y === 3) { | ||
self = self._z; | ||
} | ||
if (Promise._5) { | ||
Promise._5(self); | ||
if (Promise._B) { | ||
Promise._B(self); | ||
} | ||
if (self._2 === 0) { | ||
if (self._1 === 0) { | ||
self._1 = 1; | ||
self._4 = deferred; | ||
if (self._y === 0) { | ||
if (self._x === 0) { | ||
self._x = 1; | ||
self._A = deferred; | ||
return; | ||
} | ||
if (self._1 === 1) { | ||
self._1 = 2; | ||
self._4 = [self._4, deferred]; | ||
if (self._x === 1) { | ||
self._x = 2; | ||
self._A = [self._A, deferred]; | ||
return; | ||
} | ||
self._4.push(deferred); | ||
self._A.push(deferred); | ||
return; | ||
@@ -116,12 +116,12 @@ } | ||
setImmediate(function() { | ||
var cb = self._2 === 1 ? deferred.onFulfilled : deferred.onRejected; | ||
var cb = self._y === 1 ? deferred.onFulfilled : deferred.onRejected; | ||
if (cb === null) { | ||
if (self._2 === 1) { | ||
resolve(deferred.promise, self._3); | ||
if (self._y === 1) { | ||
resolve(deferred.promise, self._z); | ||
} else { | ||
reject(deferred.promise, self._3); | ||
reject(deferred.promise, self._z); | ||
} | ||
return; | ||
} | ||
var ret = tryCallOne(cb, self._3); | ||
var ret = tryCallOne(cb, self._z); | ||
if (ret === IS_ERROR) { | ||
@@ -154,4 +154,4 @@ reject(deferred.promise, LAST_ERROR); | ||
) { | ||
self._2 = 3; | ||
self._3 = newValue; | ||
self._y = 3; | ||
self._z = newValue; | ||
finale(self); | ||
@@ -164,4 +164,4 @@ return; | ||
} | ||
self._2 = 1; | ||
self._3 = newValue; | ||
self._y = 1; | ||
self._z = newValue; | ||
finale(self); | ||
@@ -171,6 +171,6 @@ } | ||
function reject(self, newValue) { | ||
self._2 = 2; | ||
self._3 = newValue; | ||
if (Promise._6) { | ||
Promise._6(self, newValue); | ||
self._y = 2; | ||
self._z = newValue; | ||
if (Promise._C) { | ||
Promise._C(self, newValue); | ||
} | ||
@@ -180,11 +180,11 @@ finale(self); | ||
function finale(self) { | ||
if (self._1 === 1) { | ||
handle(self, self._4); | ||
self._4 = null; | ||
if (self._x === 1) { | ||
handle(self, self._A); | ||
self._A = null; | ||
} | ||
if (self._1 === 2) { | ||
for (var i = 0; i < self._4.length; i++) { | ||
handle(self, self._4[i]); | ||
if (self._x === 2) { | ||
for (var i = 0; i < self._A.length; i++) { | ||
handle(self, self._A[i]); | ||
} | ||
self._4 = null; | ||
self._A = null; | ||
} | ||
@@ -191,0 +191,0 @@ } |
@@ -19,5 +19,5 @@ 'use strict'; | ||
function valuePromise(value) { | ||
var p = new Promise(Promise._7); | ||
p._2 = 1; | ||
p._3 = value; | ||
var p = new Promise(Promise._D); | ||
p._y = 1; | ||
p._z = value; | ||
return p; | ||
@@ -71,7 +71,7 @@ } | ||
if (val instanceof Promise && val.then === Promise.prototype.then) { | ||
while (val._2 === 3) { | ||
val = val._3; | ||
while (val._y === 3) { | ||
val = val._z; | ||
} | ||
if (val._2 === 1) return res(i, val._3); | ||
if (val._2 === 2) reject(val._3); | ||
if (val._y === 1) return res(i, val._z); | ||
if (val._y === 2) reject(val._z); | ||
val.then(function (val) { | ||
@@ -145,1 +145,45 @@ res(i, val); | ||
}; | ||
function getAggregateError(errors){ | ||
if(typeof AggregateError === 'function'){ | ||
return new AggregateError(errors,'All promises were rejected'); | ||
} | ||
var error = new Error('All promises were rejected'); | ||
error.name = 'AggregateError'; | ||
error.errors = errors; | ||
return error; | ||
} | ||
Promise.any = function promiseAny(values) { | ||
return new Promise(function(resolve, reject) { | ||
var promises = iterableToArray(values); | ||
var hasResolved = false; | ||
var rejectionReasons = []; | ||
function resolveOnce(value) { | ||
if (!hasResolved) { | ||
hasResolved = true; | ||
resolve(value); | ||
} | ||
} | ||
function rejectionCheck(reason) { | ||
rejectionReasons.push(reason); | ||
if (rejectionReasons.length === promises.length) { | ||
reject(getAggregateError(rejectionReasons)); | ||
} | ||
} | ||
if(promises.length === 0){ | ||
reject(getAggregateError(rejectionReasons)); | ||
} else { | ||
promises.forEach(function(value){ | ||
Promise.resolve(value).then(resolveOnce, rejectionCheck); | ||
}); | ||
} | ||
}); | ||
}; |
@@ -15,4 +15,4 @@ 'use strict'; | ||
enabled = false; | ||
Promise._5 = null; | ||
Promise._6 = null; | ||
Promise._B = null; | ||
Promise._C = null; | ||
} | ||
@@ -28,23 +28,23 @@ | ||
var rejections = {}; | ||
Promise._5 = function (promise) { | ||
Promise._B = function (promise) { | ||
if ( | ||
promise._2 === 2 && // IS REJECTED | ||
rejections[promise._8] | ||
promise._y === 2 && // IS REJECTED | ||
rejections[promise._E] | ||
) { | ||
if (rejections[promise._8].logged) { | ||
onHandled(promise._8); | ||
if (rejections[promise._E].logged) { | ||
onHandled(promise._E); | ||
} else { | ||
clearTimeout(rejections[promise._8].timeout); | ||
clearTimeout(rejections[promise._E].timeout); | ||
} | ||
delete rejections[promise._8]; | ||
delete rejections[promise._E]; | ||
} | ||
}; | ||
Promise._6 = function (promise, err) { | ||
if (promise._1 === 0) { // not yet handled | ||
promise._8 = id++; | ||
rejections[promise._8] = { | ||
Promise._C = function (promise, err) { | ||
if (promise._x === 0) { // not yet handled | ||
promise._E = id++; | ||
rejections[promise._E] = { | ||
displayId: null, | ||
error: err, | ||
timeout: setTimeout( | ||
onUnhandled.bind(null, promise._8), | ||
onUnhandled.bind(null, promise._E), | ||
// For reference errors and type errors, this almost always | ||
@@ -51,0 +51,0 @@ // means the programmer made a mistake, so log them after just |
@@ -20,4 +20,4 @@ 'use strict'; | ||
Promise.prototype.getValue = function () { | ||
if (this._2 === 3) { | ||
return this._3.getValue(); | ||
if (this._y === 3) { | ||
return this._z.getValue(); | ||
} | ||
@@ -29,8 +29,8 @@ | ||
return this._3; | ||
return this._z; | ||
}; | ||
Promise.prototype.getReason = function () { | ||
if (this._2 === 3) { | ||
return this._3.getReason(); | ||
if (this._y === 3) { | ||
return this._z.getReason(); | ||
} | ||
@@ -42,14 +42,14 @@ | ||
return this._3; | ||
return this._z; | ||
}; | ||
Promise.prototype.getState = function () { | ||
if (this._2 === 3) { | ||
return this._3.getState(); | ||
if (this._y === 3) { | ||
return this._z.getState(); | ||
} | ||
if (this._2 === -1 || this._2 === -2) { | ||
if (this._y === -1 || this._y === -2) { | ||
return 0; | ||
} | ||
return this._2; | ||
return this._y; | ||
}; | ||
@@ -56,0 +56,0 @@ }; |
@@ -143,1 +143,45 @@ 'use strict'; | ||
}; | ||
function getAggregateError(errors){ | ||
if(typeof AggregateError === 'function'){ | ||
return new AggregateError(errors,'All promises were rejected'); | ||
} | ||
var error = new Error('All promises were rejected'); | ||
error.name = 'AggregateError'; | ||
error.errors = errors; | ||
return error; | ||
} | ||
Promise.any = function promiseAny(values) { | ||
return new Promise(function(resolve, reject) { | ||
var promises = iterableToArray(values); | ||
var hasResolved = false; | ||
var rejectionReasons = []; | ||
function resolveOnce(value) { | ||
if (!hasResolved) { | ||
hasResolved = true; | ||
resolve(value); | ||
} | ||
} | ||
function rejectionCheck(reason) { | ||
rejectionReasons.push(reason); | ||
if (rejectionReasons.length === promises.length) { | ||
reject(getAggregateError(rejectionReasons)); | ||
} | ||
} | ||
if(promises.length === 0){ | ||
reject(getAggregateError(rejectionReasons)); | ||
} else { | ||
promises.forEach(function(value){ | ||
Promise.resolve(value).then(resolveOnce, rejectionCheck); | ||
}); | ||
} | ||
}); | ||
}; |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
109395
3042
275
1