Fives Observable

by gladtocode

HTML

<body>
  Values:
</body>

JavaScript

const print = (value) => {
  const paragraph = document.createElement('p');
  paragraph.innerHTML = value;
  document.body.appendChild(paragraph);
}

const integerObservable = (observer) => {
  let x = 0;
  setInterval(
    () => {
      x = x + 1;
      observer(x);
    },
    500
  );
};

const multiplyOperator = (originalObservable, multiplier) => {
  return function(observer) {
    // Our internalObserver observes the original stream, and for each
    // value emitted, we emit a corresponding value -- the original value
    // multipled by the specified multplier
    const internalObserver = (value) => observer(value * multiplier);
    originalObservable(internalObserver);
  }
}

const fivesObservable = multiplyOperator(integerObservable, 5);
fivesObservable(print);