2017-06-14 77 views
0

不知,下面给出RX代码:对于可观察,订阅订单是否保证与通知订单相同?

myObservable.subscribe(obs1) 
myObservable.subscribe(obs2) 

...可以保证obs1.onNext是obs2.onNext

PS之前调用:从我的角度来看,这是不好的做法编写代码这依赖于订阅订单,但我很好奇RX文档中是否有任何此类担保。

谢谢

回答

2

为什么你不阅读文档?

答案是,但这取决于。

如果myObservable是一个可观察的事件,当用户出现时创建一个全新的管道,那么不能保证他们将以任何顺序调用。

例如,Observable.Interval(TimeSpan.FromSeconds(1.0))将在用户出现时创建一个全新的管道。两个用户然后两个管道。

但是,如果myObservableSubject<int>那么观察者附加的顺序是关键。只有一个观察者会一次接收值,并且会按顺序完成。这是所有用户的共享管道。

您总是可以采取Observable.Interval(TimeSpan.FromSeconds(1.0))并将.Publish()添加到最后。然后你会得到一个像Subject<int>一样的可观察对象,并且可以拥有多个观察者。

+0

我在reactivex.io和introtorx.com上都阅读过,但我没有发现任何有关订阅顺序的明确声明。 – vidi

+0

@vidi - 我的描述是否有意义? – Enigmativity

+0

是的,它的确如此。所以基本上它取决于潜在观察值的实现,因此不应该依赖订阅订单 – vidi