2017-06-14 78 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