2016-05-30 27 views
2

是否有可能有一种BehaviorSubject暂停和恢复开关?像PausableBehaviorSubject.pause()PausableBehaviorSubject.resume()?这怎么可能完成?可运行的行为主题?

这个想法是,暂停时,主题不会转发通过PausableBehaviorSubject.onNext()收到的事件,而是只存储最后一个。在恢复时(或者在订购时,如果不暂停),PausableBehaviorSubject将转发存储的最后事件(如果有的话)并将后续事件转发给其订户。

+0

像这样:'subject.filter(i - >!isPaused).replay(1).autoconnect()'? (未测试..) – dwursteisen

+0

你不能只是'订阅'和'取消订阅'而不是'恢复'和'暂停'? –

+0

@SamuelGruetter问题是,你会让观察者控制何时得到更新,什么时候没有。有了一个可观察的可观察的事物,这可以被封装,因此暂停/恢复将停留在观察者不能接触的地方。 –

回答

0

有一个操作员,可以让你这样做。它被称为pausableBuffered。你可以看到一个动画:RxMarbles

您的观察者或主题将简单地打包原始的observable,添加一个新的布尔observable,并通过向新的observable提供true或false值来翻转开关。