react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / request / node_modules / har-validator / node_modules / bluebird / js / main / join.js
81160 views"use strict";1module.exports =2function(Promise, PromiseArray, tryConvertToPromise, INTERNAL) {3var util = require("./util.js");4var canEvaluate = util.canEvaluate;5var tryCatch = util.tryCatch;6var errorObj = util.errorObj;7var reject;89if (!false) {10if (canEvaluate) {11var thenCallback = function(i) {12return new Function("value", "holder", " \n\13'use strict'; \n\14holder.pIndex = value; \n\15holder.checkFulfillment(this); \n\16".replace(/Index/g, i));17};1819var caller = function(count) {20var values = [];21for (var i = 1; i <= count; ++i) values.push("holder.p" + i);22return new Function("holder", " \n\23'use strict'; \n\24var callback = holder.fn; \n\25return callback(values); \n\26".replace(/values/g, values.join(", ")));27};28var thenCallbacks = [];29var callers = [undefined];30for (var i = 1; i <= 5; ++i) {31thenCallbacks.push(thenCallback(i));32callers.push(caller(i));33}3435var Holder = function(total, fn) {36this.p1 = this.p2 = this.p3 = this.p4 = this.p5 = null;37this.fn = fn;38this.total = total;39this.now = 0;40};4142Holder.prototype.callers = callers;43Holder.prototype.checkFulfillment = function(promise) {44var now = this.now;45now++;46var total = this.total;47if (now >= total) {48var handler = this.callers[total];49promise._pushContext();50var ret = tryCatch(handler)(this);51promise._popContext();52if (ret === errorObj) {53promise._rejectCallback(ret.e, false, true);54} else {55promise._resolveCallback(ret);56}57} else {58this.now = now;59}60};6162var reject = function (reason) {63this._reject(reason);64};65}66}6768Promise.join = function () {69var last = arguments.length - 1;70var fn;71if (last > 0 && typeof arguments[last] === "function") {72fn = arguments[last];73if (!false) {74if (last < 6 && canEvaluate) {75var ret = new Promise(INTERNAL);76ret._captureStackTrace();77var holder = new Holder(last, fn);78var callbacks = thenCallbacks;79for (var i = 0; i < last; ++i) {80var maybePromise = tryConvertToPromise(arguments[i], ret);81if (maybePromise instanceof Promise) {82maybePromise = maybePromise._target();83if (maybePromise._isPending()) {84maybePromise._then(callbacks[i], reject,85undefined, ret, holder);86} else if (maybePromise._isFulfilled()) {87callbacks[i].call(ret,88maybePromise._value(), holder);89} else {90ret._reject(maybePromise._reason());91}92} else {93callbacks[i].call(ret, maybePromise, holder);94}95}96return ret;97}98}99}100var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];}101if (fn) args.pop();102var ret = new PromiseArray(args).promise();103return fn !== undefined ? ret.spread(fn) : ret;104};105106};107108109