diff options
Diffstat (limited to 'node_modules/bluebird/js/main/settle.js')
-rw-r--r-- | node_modules/bluebird/js/main/settle.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/node_modules/bluebird/js/main/settle.js b/node_modules/bluebird/js/main/settle.js new file mode 100644 index 000000000..f9299c258 --- /dev/null +++ b/node_modules/bluebird/js/main/settle.js @@ -0,0 +1,40 @@ +"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(); +}; +}; |