【发布时间】:2016-05-11 21:50:19
【问题描述】:
我仍在研究响应式编程,所以我很确定这是非常基础的,但流转换的数量对于初学者来说是相当多的。
我正在从 DOM 事件创建一个 Observable。此事件应反过来触发 REST 调用,并且所有其他 DOM 事件将被忽略,直到此事件得到解决。
const stream = Observable.fromEvent(document, 'some-event')
stream
.flatMap(() => httpRestService())
.subscribe(() => {
})
在最后一个 HTTP 承诺解决之前,如何忽略流中的事件?
DOM event
A - - - - B - - - - C
HTTP event
D ...........done - C
【问题讨论】:
-
首先,观察者不发出值,它接收值。所以在这里你的观察者是一个可观察的。那我不知道你说的“忽略”是什么意思。这些事件是否丢失或排队?介绍问题的最佳方式是指定输入和预期输出。最好用大理石图来完成
-
@user3743222 已更新
-
也许
skipUntil会是您想要的? reactivex.io/documentation/operators/skipuntil.html -
我会咬人的——为什么你要忽略所有的 DOM 事件,直到最后一个 HTTP 承诺得到解决?是因为您不想在最后一个解决之前触发额外的 HTTP 调用吗?如果是这种情况,您是否可以禁用输入/显示微调器/其他任何阻止 DOM 事件首先发生的方法?否则,我同意@Stephen -
skipUntil可能最接近你想要的。
标签: javascript reactive-programming rxjs