流有条件地对热 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
});
非常感谢任何帮助。
虽然我不确定是否需要这样做,但我可能已经找到了 buffers
和 pausableBuffered
的解决方案,操作 BehaviorSubject
:
我正在尝试使用一个组件来异步(和有条件地)对鼠标事件流做出反应。这是一个简单的场景:
你悬停在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
});
非常感谢任何帮助。
虽然我不确定是否需要这样做,但我可能已经找到了 buffers
和 pausableBuffered
的解决方案,操作 BehaviorSubject
: