| "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); |
| }; |
| }; |