JSFiddle - React, Tailwind, and code Playground

by stvnmntjy

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.2/Rx.min.js"></script>

JavaScript

const Observable = Rx.Observable;

const time = () => {
  const now = new Date();
  return `${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}.${now.getMilliseconds()}`;
};

const write = text => {
  const textNode = document.createTextNode(`[${time()}]: ${text}`);
  const p = document.createElement('p');
  p.appendChild(textNode);
  document.body.appendChild(p);
};

const observeScalar = observable$ => {
  observable$.subscribe(
    nextValue => {
      write(nextValue);
    },
    err => {
      write(err);
    },
    () => {
      write('complete alpha observable!');
    }
  );
};

const observeJSON = observable$ => {
  observable$.subscribe(
    nextValue => {
      const json$ = Observable.from(nextValue.json());
      json$.subscribe(
        json => {
          write(JSON.stringify(json));
        },
        err => {
          write(err);
        },
        () => {
          write('complete inner response observable!');
        }
      );
    },
    err => {
      write(err);
    },
    () => {
      write('complete alpha observable!');
    }
  );
};

const hi$ = Observable.of('hi');
observeScalar(hi$);

const arr$ = Observable.from([1, 2, 3, 4, 5]);
observeScalar(arr$);

const ajax$ = Observable.fromPromise(fetch('https://jsonplaceholder.typicode.com/posts/1'));
observeJSON(ajax$);