You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
"use strict"; |
|
module.exports = |
|
function(Promise, PromiseArray, debug) { |
|
var PromiseInspection = Promise.PromiseInspection; |
|
var util = require("./util"); |
|
|
|
function SettledPromiseArray(values) { |
|
this.constructor$(values); |
|
} |
|
util.inherits(SettledPromiseArray, PromiseArray); |
|
|
|
SettledPromiseArray.prototype._promiseResolved = function (index, inspection) { |
|
this._values[index] = inspection; |
|
var totalResolved = ++this._totalResolved; |
|
if (totalResolved >= this._length) { |
|
this._resolve(this._values); |
|
return true; |
|
} |
|
return false; |
|
}; |
|
|
|
SettledPromiseArray.prototype._promiseFulfilled = function (value, index) { |
|
var ret = new PromiseInspection(); |
|
ret._bitField = 33554432; |
|
ret._settledValueField = value; |
|
return this._promiseResolved(index, ret); |
|
}; |
|
SettledPromiseArray.prototype._promiseRejected = function (reason, index) { |
|
var ret = new PromiseInspection(); |
|
ret._bitField = 16777216; |
|
ret._settledValueField = reason; |
|
return this._promiseResolved(index, ret); |
|
}; |
|
|
|
Promise.settle = function (promises) { |
|
debug.deprecated(".settle()", ".reflect()"); |
|
return new SettledPromiseArray(promises).promise(); |
|
}; |
|
|
|
Promise.allSettled = function (promises) { |
|
return new SettledPromiseArray(promises).promise(); |
|
}; |
|
|
|
Promise.prototype.settle = function () { |
|
return Promise.settle(this); |
|
}; |
|
};
|
|
|