我想知道,如果给定以下 RX 代码:
myObservable.subscribe(obs1)
myObservable.subscribe(obs2)
...保证在 obs2.onNext 之前调用 obs1.onNext
PS:从我的角度来看,编写依赖于订阅顺序的代码是一种不好的做法,但我很好奇 RX 文档中是否有任何此类保证。
谢谢
最佳答案
你为什么不阅读文档?
答案是,这取决于。
如 myObservable
是一个 observable,它在订阅者出现时创建一个全新的管道,然后不能保证他们会以任何顺序调用。
例如,Observable.Interval(TimeSpan.FromSeconds(1.0))
当订阅者出现时,将创建一个全新的管道。两个订阅者然后是两个管道。
但是,如果 myObservable
是 Subject<int>
那么观察者附加的顺序是关键。一次只有一个观察者会收到值,并且会按顺序完成。这是所有订阅者的共享管道。
您可以随时取Observable.Interval(TimeSpan.FromSeconds(1.0))
并添加 .Publish()
到最后。然后你会得到一个行为类似于 Subject<int>
的 observable并且可以对一个源有多个观察者。
关于system.reactive - 对于 Observable,订阅顺序是否保证与通知顺序相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44546885/