RxJS FlatMap actions

by myrluk3

HTML

<div id="content"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.6/Rx.min.js"></script>

JavaScript

const content = document.querySelector('#content');
const actions = [{
    condition: true,
    value: 'alma'
  },
  {
    condition: true,
    value: 'korte'
  },
  {
    condition: true,
    value: 'sziiiilva'
  }
  
];

/* const handleAction = (c, a) => {
    console.log('subs', c)
    if (confirm(a && a.value)) {
      content.append(a && a.value + ' ');
      return Rx.Observable.of(c);
    } else {
      return Rx.Observable.empty();
    }
  };
 */
 
const handleAction = (a) => {
    console.log('subs', a)
    if (confirm(a && a.value)) {
      content.append(a && a.value + ' ');
      return Rx.Observable.of(a);
    } else {
      return Rx.Observable.empty();
    }
  };
  
const toSubs = actions.reduce((acc, curr) => {
  return acc ? acc.switchMap(handleAction.bind(this, curr)) : Rx.Observable.of(curr).switchMap(handleAction.bind(this, curr));
}, null);

//let toSubs = Rx.Observable.of(actions[0]).switchMap(handleAction.bind(this, null));

//actions.slice(1).forEach((action, index) => {
// toSubs = toSubs.switchMap(handleAction.bind(this, actions[index - 1], action));
//});

toSubs.subscribe(
  (a) => {
    console.log('SUB');
  },
  err => {
    console.log('errrrr', err);
  },
  () => {
    console.log('completed!')
    content.append(' DO_ACTION')
  }
);