我想知道,如果给出以下RX代码:
myObservable.subscribe(obs1)
myObservable.subscribe(obs2)
...保证在obs2.onNext
之前调用obs1.onNextPS:从我的角度来看,编写依赖于订阅顺序的代码是不好的做法,但我很好奇RX文档中是否有任何此类保证。
由于
答案 0 :(得分:2)
为什么不阅读文档?
答案是,这取决于。
如果myObservable
是一个观察者,当订阅者出现时会创建一个全新的管道,那么就无法保证他们会以任何顺序调用。
例如,当订阅者出现时,Observable.Interval(TimeSpan.FromSeconds(1.0))
将创建一个全新的管道。两个订户然后是两个管道。
但是,如果myObservable
是Subject<int>
,那么观察者附加的顺序就是关键。只有一个观察者会一次接收值,并且将按顺序完成。这是所有订阅者的共享管道。
您始终可以Observable.Interval(TimeSpan.FromSeconds(1.0))
并将.Publish()
添加到最后。然后你会得到一个像Subject<int>
一样的可观测量,并且可以为一个源提供多个观察者。