3 function(Promise, PromiseArray) {
4 var PromiseInspection = Promise.PromiseInspection;
5 var util = require("./util.js");
7 function SettledPromiseArray(values) {
8 this.constructor$(values);
10 util.inherits(SettledPromiseArray, PromiseArray);
12 SettledPromiseArray.prototype._promiseResolved = function (index, inspection) {
13 this._values[index] = inspection;
14 var totalResolved = ++this._totalResolved;
15 if (totalResolved >= this._length) {
16 this._resolve(this._values);
20 SettledPromiseArray.prototype._promiseFulfilled = function (value, index) {
21 var ret = new PromiseInspection();
22 ret._bitField = 268435456;
23 ret._settledValue = value;
24 this._promiseResolved(index, ret);
26 SettledPromiseArray.prototype._promiseRejected = function (reason, index) {
27 var ret = new PromiseInspection();
28 ret._bitField = 134217728;
29 ret._settledValue = reason;
30 this._promiseResolved(index, ret);
33 Promise.settle = function (promises) {
34 return new SettledPromiseArray(promises).promise();
37 Promise.prototype.settle = function () {
38 return new SettledPromiseArray(this).promise();