什么是 RxJS (redux-observable) 替代 takeLatest from redux-saga?

What is RxJS (redux-observable) alternative to takeLatest from redux-saga?

如果史诗收到新动作,停止处理旧动作。 一点背景:我有一个史诗,它发出很少的延迟动作。 如果 epic 收到新动作,我需要取消它们。

Redux-saga 效果完全符合我的要求: takeLatest

这正是 .switchMap 运算符所做的:

Projects each source value to an Observable which is merged in the output Observable, emitting values only from the most recently projected Observable.

在此示例中,您可以看到在新 click 到达后,先前的 interval 不再处理:

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>