Ohm-Management - Projektarbeit B-ME
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.

repeatWhen.js 3.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
  2. import * as tslib_1 from "tslib";
  3. import { Subject } from '../Subject';
  4. import { OuterSubscriber } from '../OuterSubscriber';
  5. import { subscribeToResult } from '../util/subscribeToResult';
  6. export function repeatWhen(notifier) {
  7. return function (source) { return source.lift(new RepeatWhenOperator(notifier)); };
  8. }
  9. var RepeatWhenOperator = /*@__PURE__*/ (function () {
  10. function RepeatWhenOperator(notifier) {
  11. this.notifier = notifier;
  12. }
  13. RepeatWhenOperator.prototype.call = function (subscriber, source) {
  14. return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));
  15. };
  16. return RepeatWhenOperator;
  17. }());
  18. var RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) {
  19. tslib_1.__extends(RepeatWhenSubscriber, _super);
  20. function RepeatWhenSubscriber(destination, notifier, source) {
  21. var _this = _super.call(this, destination) || this;
  22. _this.notifier = notifier;
  23. _this.source = source;
  24. _this.sourceIsBeingSubscribedTo = true;
  25. return _this;
  26. }
  27. RepeatWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
  28. this.sourceIsBeingSubscribedTo = true;
  29. this.source.subscribe(this);
  30. };
  31. RepeatWhenSubscriber.prototype.notifyComplete = function (innerSub) {
  32. if (this.sourceIsBeingSubscribedTo === false) {
  33. return _super.prototype.complete.call(this);
  34. }
  35. };
  36. RepeatWhenSubscriber.prototype.complete = function () {
  37. this.sourceIsBeingSubscribedTo = false;
  38. if (!this.isStopped) {
  39. if (!this.retries) {
  40. this.subscribeToRetries();
  41. }
  42. if (!this.retriesSubscription || this.retriesSubscription.closed) {
  43. return _super.prototype.complete.call(this);
  44. }
  45. this._unsubscribeAndRecycle();
  46. this.notifications.next();
  47. }
  48. };
  49. RepeatWhenSubscriber.prototype._unsubscribe = function () {
  50. var _a = this, notifications = _a.notifications, retriesSubscription = _a.retriesSubscription;
  51. if (notifications) {
  52. notifications.unsubscribe();
  53. this.notifications = null;
  54. }
  55. if (retriesSubscription) {
  56. retriesSubscription.unsubscribe();
  57. this.retriesSubscription = null;
  58. }
  59. this.retries = null;
  60. };
  61. RepeatWhenSubscriber.prototype._unsubscribeAndRecycle = function () {
  62. var _unsubscribe = this._unsubscribe;
  63. this._unsubscribe = null;
  64. _super.prototype._unsubscribeAndRecycle.call(this);
  65. this._unsubscribe = _unsubscribe;
  66. return this;
  67. };
  68. RepeatWhenSubscriber.prototype.subscribeToRetries = function () {
  69. this.notifications = new Subject();
  70. var retries;
  71. try {
  72. var notifier = this.notifier;
  73. retries = notifier(this.notifications);
  74. }
  75. catch (e) {
  76. return _super.prototype.complete.call(this);
  77. }
  78. this.retries = retries;
  79. this.retriesSubscription = subscribeToResult(this, retries);
  80. };
  81. return RepeatWhenSubscriber;
  82. }(OuterSubscriber));
  83. //# sourceMappingURL=repeatWhen.js.map