流有条件地对热 Observable 做出反应?

Streams reacting conditionally to hot Observable?

我正在尝试使用一个组件来异步(和有条件地)对鼠标事件流做出反应。这是一个简单的场景:

你悬停在a {@time: 0},组件变成A {@time:4},但此时用户已经悬停在b {@time:2}然后c {@time:4}。所以组件需要将形式 A 转换为 C.

MouseEventStream:  a-b-c-------d-e-f-g--h--------|->
ComponentState:    *---A---*---C---*---F---*---H-|->

* is the idle state

我已经尝试过类似下面的方法,但我需要过滤器来缓冲一些事件...

var subject = new Rx.Subject();
.filter(function() {

    return self.isIdle();
})
.map(function(item) {

    return item;
})
.subscribe(function (){
    // do something
});

非常感谢任何帮助。

虽然我不确定是否需要这样做,但我可能已经找到了 bufferspausableBuffered 的解决方案,操作 BehaviorSubject:

http://jsbin.com/tedolerapo/7/edit?js,output