如果另一个序列发出,则取消可观察

时间:2017-04-05 17:20:05

标签: javascript rxjs

我有两个可观测量,hover$unhover$,分别在悬停和模糊时触发。

unhover$有一个debounceTime(500)来推迟它过快。

现在考虑一下这个时间表:

 [    0ms] hover triggered
 [   50ms] unhover 500ms debounce started
 [  100ms] hover triggered
 [  550ms] unhover triggered 

我如何取消'当unhover$序列发出新值时,第一个待定的hover$

1 个答案:

答案 0 :(得分:3)

如果通知程序Observable发出值,您可以使用takeUntil取消订阅您的o​​bservable。

这样的事情:

unhover$
.debounceTime(500)
.switchMap(evt => Rx.Observable.of(evt)
  .takeUntil(hover$)
)
.subscribe(console.log);