您的位置:首页 > Web前端 > JavaScript

[RxJS] Starting a Stream with SwitchMap & switchMapTo

2016-03-08 03:34 579 查看
From an event map to another event we can use switchMap(), switchMap() accept an function which return an obervable.

The following code: When you click the button, it will start a interval to console out the count...

const Observable = Rx.Observable;

const startButton = document.querySelector('#start');

const start$ = Rx.Observable.fromEvent(startButton, 'click');
const interval$ = Observable.interval(400);

const startInterval$ = start$.switchMap( () => {
return interval$;
});

startInterval$.subscribe( (x) => {
console.log(x);
});


So the start$ switch map to a interval$ to avoid writting the nested subscribe function.


switchMap() actually is pretty useful when dealing with http event stream, it can help to cancel the previous http call.



switchMapTo(): which accept an observable:

/*
const startInterval$ = start$.switchMap( () => {
return interval$;
});*/

const startInterval$ = start$.switchMapTo( interval$ );


Tow pieces of code, works the same way.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: