promiseMap.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.promiseMap = void 0;
  4. const noop = () => { };
  5. /**
  6. * Creates promises of a list of values. Resolves all promises and
  7. * returns an array of resolved values.
  8. */
  9. const promiseMap = (values, onValue, onError = noop) => new Promise((resolve) => {
  10. const length = values.length;
  11. if (!length) {
  12. return resolve([]);
  13. }
  14. const results = [];
  15. let resolvedCount = 0;
  16. for (let i = 0; i < length; i++) {
  17. const value = values[i];
  18. const promise = onValue(value);
  19. promise.then((result) => {
  20. results[i] = result;
  21. resolvedCount++;
  22. if (resolvedCount === length) {
  23. resolve(results);
  24. }
  25. }, (error) => {
  26. results[i] = null;
  27. onError(error, value, i);
  28. resolvedCount++;
  29. if (resolvedCount === length) {
  30. resolve(results);
  31. }
  32. });
  33. }
  34. });
  35. exports.promiseMap = promiseMap;