f9299c25898cc685679b291d00446d06207b7caf
[aai/esr-gui.git] /
1 "use strict";
2 module.exports =
3     function(Promise, PromiseArray) {
4 var PromiseInspection = Promise.PromiseInspection;
5 var util = require("./util.js");
6
7 function SettledPromiseArray(values) {
8     this.constructor$(values);
9 }
10 util.inherits(SettledPromiseArray, PromiseArray);
11
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);
17     }
18 };
19
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);
25 };
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);
31 };
32
33 Promise.settle = function (promises) {
34     return new SettledPromiseArray(promises).promise();
35 };
36
37 Promise.prototype.settle = function () {
38     return new SettledPromiseArray(this).promise();
39 };
40 };