【发布时间】:2016-11-28 12:23:53
【问题描述】:
我想在 RxJS 中完成一些我会用英语表达的东西:
等待从流中引发事件,执行某个功能,然后等待该流中的 5 秒静默,然后执行另一个功能。
我对此进行了多次尝试。我要订阅的流如下所示:
this.documentClick$ = Observable.fromEvent(document.querySelector('body'), 'mousemove')
.merge(Observable.fromEvent(document.querySelector('body'), 'click'));
目前的两个竞争者可以胜任,但各有缺点:
this.documentClick$
.subscribe( () => {
this.toolbarsVisible = 'visible';
});
this.documentClick$
.debounceTime(5000)
.subscribe( () => {
this.toolbarsVisible = 'hidden';
});
和
this.documentClick$
.do( () => {
this.toolbarsVisible = 'visible';
})
.debounceTime(3000)
.subscribe( () => {
this.toolbarsVisible = 'hidden';
});
这样做的“最正确”方法是什么?我认为最好使用主题,但我无法将Observable.fromEvent() 加入主题。
(我想我真正想问的问题是:如何从 Observable 创建一个 Subject?)
【问题讨论】:
标签: javascript rxjs reactive-programming rxjs5