RxJS flatMap

A blank canvas to play / experiment with RxJS: https://github.com/Reactive-Extensions/RxJS

by jgoemat

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.0.7/rx.all.js"></script>

JavaScript

console.clear();

    var ids = ["a", "d", "c"];
    var lookupValues = { "a": 123, "b": 234, "c": 345, "d": 456 };

    // given an id
    function fakeApiCall(id) {
      // given an id, return an observable with one entry: an object consisting
      // of an 'id' property with that id value and a 'lookup' property with the
      // value from lookupValues for that id
      return Rx.Observable.just({ id: id, lookup: lookupValues[id] });
    }

    var o1 = Rx.Observable.from(ids); // 'a, d, c

    var o2 = o1.flatMap(x => {
      // here we get each value from o1, so we do an api call and return
      // an observable from each that will have the values in that
      // observable combined with all others to be sent to o2
      return fakeApiCall(x);
    });

    o2.subscribe(x => {
      document.write(JSON.stringify(x) + "<br/>");
    });

    // result:
    // {"id":"a","lookup":123}
    // {"id":"d","lookup":456}
    // {"id":"c","lookup":345}