Newer
Older
CVSS_3.0_GUI / node_modules / nwjs-builder-phoenix / node_modules / dir-compare / node_modules / bluebird / js / release / race.js
root on 7 May 2019 1 KB Initial commit
  1. "use strict";
  2. module.exports = function(
  3. Promise, INTERNAL, tryConvertToPromise, apiRejection) {
  4. var util = require("./util");
  5.  
  6. var raceLater = function (promise) {
  7. return promise.then(function(array) {
  8. return race(array, promise);
  9. });
  10. };
  11.  
  12. function race(promises, parent) {
  13. var maybePromise = tryConvertToPromise(promises);
  14.  
  15. if (maybePromise instanceof Promise) {
  16. return raceLater(maybePromise);
  17. } else {
  18. promises = util.asArray(promises);
  19. if (promises === null)
  20. return apiRejection("expecting an array or an iterable object but got " + util.classString(promises));
  21. }
  22.  
  23. var ret = new Promise(INTERNAL);
  24. if (parent !== undefined) {
  25. ret._propagateFrom(parent, 3);
  26. }
  27. var fulfill = ret._fulfill;
  28. var reject = ret._reject;
  29. for (var i = 0, len = promises.length; i < len; ++i) {
  30. var val = promises[i];
  31.  
  32. if (val === undefined && !(i in promises)) {
  33. continue;
  34. }
  35.  
  36. Promise.cast(val)._then(fulfill, reject, undefined, ret, null);
  37. }
  38. return ret;
  39. }
  40.  
  41. Promise.race = function (promises) {
  42. return race(promises, undefined);
  43. };
  44.  
  45. Promise.prototype.race = function () {
  46. return race(this, undefined);
  47. };
  48.  
  49. };
Buy Me A Coffee