Что такое RxJS (редукционно-наблюдаемая) альтернатива takeLatest из редукционной саги?

Если эпик получает новое действие, прекратите обработку старых действий. Немного контекста: у меня есть эпопея, в которой мало отложенных действий. Мне нужно отменить их, если эпик получит новое действие.

Эффект Redux-saga, который делает именно то, что я хочу: takeLatest


person Sasha Tobin    schedule 20.01.2018    source источник


Ответы (1)


Это именно то, что делает оператор .switchMap:

Проецирует каждое исходное значение в Observable, которое объединяется с выходным Observable, испуская значения только из самого последнего спроецированного Observable.

In this example you can see that previous interval is no longer processing after new click arrives:

const clicks = Rx.Observable.fromEvent(document, 'click');
const result = clicks.switchMap((ev) => Rx.Observable.interval(1000));

result.subscribe(x => console.log(x));
<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>
<button>send new click</button>

person Oles Savluk    schedule 20.01.2018