流有条件地对热可观察做出反应

Streams reacting conditionally to hot Observable?

本文关键字:观察 有条件      更新时间:2023-09-26

我正在尝试拥有一个组件,以异步(和有条件地)对鼠标事件流做出反应。下面是一个简单的方案:

您将鼠标悬停在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