exhaustMap.js 1.4 KB

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.exhaustMap = void 0;
  4. var map_1 = require("./map");
  5. var innerFrom_1 = require("../observable/innerFrom");
  6. var lift_1 = require("../util/lift");
  7. var OperatorSubscriber_1 = require("./OperatorSubscriber");
  8. function exhaustMap(project, resultSelector) {
  9. if (resultSelector) {
  10. return function (source) {
  11. return source.pipe(exhaustMap(function (a, i) { return innerFrom_1.innerFrom(project(a, i)).pipe(map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));
  12. };
  13. }
  14. return lift_1.operate(function (source, subscriber) {
  15. var index = 0;
  16. var innerSub = null;
  17. var isComplete = false;
  18. source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (outerValue) {
  19. if (!innerSub) {
  20. innerSub = OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {
  21. innerSub = null;
  22. isComplete && subscriber.complete();
  23. });
  24. innerFrom_1.innerFrom(project(outerValue, index++)).subscribe(innerSub);
  25. }
  26. }, function () {
  27. isComplete = true;
  28. !innerSub && subscriber.complete();
  29. }));
  30. });
  31. }
  32. exports.exhaustMap = exhaustMap;
  33. //# sourceMappingURL=exhaustMap.js.map