RxJs ping-pond

by Leo

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/rxjs/5.1.1/Rx.js"></script>

JavaScript

let actions$ = new Rx.Subject();


let ping$ = Rx.Observable.interval(3000).flatMap((a)=>{
debugger;
    return Rx.Observable.of(({type: "ping", value: a}));
});
ping$.subscribe(actions$)

let echo$ = 
   actions$.filter((a)=> a.type == 'ping')
  .switchMap((a) => {
           console.log("ping " + a.value);
           return Rx.Observable.of({type: "pong", value: a.value}).delay(1000).take(1) ;
  });

echo$.subscribe((a) => {
        console.log(a.type + " " + a.value);
});