You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
"use strict"; module.exports = function( Promise, INTERNAL, tryConvertToPromise, apiRejection) { var util = require("./util");
var raceLater = function (promise) { return promise.then(function(array) { return race(array, promise); }); };
function race(promises, parent) { var maybePromise = tryConvertToPromise(promises);
if (maybePromise instanceof Promise) { return raceLater(maybePromise); } else { promises = util.asArray(promises); if (promises === null) return apiRejection("expecting an array or an iterable object but got " + util.classString(promises)); }
var ret = new Promise(INTERNAL); if (parent !== undefined) { ret._propagateFrom(parent, 3); } var fulfill = ret._fulfill; var reject = ret._reject; for (var i = 0, len = promises.length; i < len; ++i) { var val = promises[i];
if (val === undefined && !(i in promises)) { continue; }
Promise.cast(val)._then(fulfill, reject, undefined, ret, null); } return ret; }
Promise.race = function (promises) { return race(promises, undefined); };
Promise.prototype.race = function () { return race(this, undefined); };
};
|