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);
});