Double Integer 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 doubleOperator = (originalObservable) => {
  const newObservable = function(observer) {
    // observe the original observable, and whenever it emits a value, double it and emit it to our own observer:
    originalObservable((originalValue) => {
      observer(originalValue * 2);
    });
  }
  return newObservable;
}

const doubleIntegerObservable = doubleOperator(integerObservable);
doubleIntegerObservable(print);