| "use strict"; |
| module.exports = |
| function(Promise, PromiseArray) { |
| var PromiseInspection = Promise.PromiseInspection; |
| var util = require("./util.js"); |
| |
| 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); |
| } |
| }; |
| |
| SettledPromiseArray.prototype._promiseFulfilled = function (value, index) { |
| var ret = new PromiseInspection(); |
| ret._bitField = 268435456; |
| ret._settledValue = value; |
| this._promiseResolved(index, ret); |
| }; |
| SettledPromiseArray.prototype._promiseRejected = function (reason, index) { |
| var ret = new PromiseInspection(); |
| ret._bitField = 134217728; |
| ret._settledValue = reason; |
| this._promiseResolved(index, ret); |
| }; |
| |
| Promise.settle = function (promises) { |
| return new SettledPromiseArray(promises).promise(); |
| }; |
| |
| Promise.prototype.settle = function () { |
| return new SettledPromiseArray(this).promise(); |
| }; |
| }; |