0
当我将多个观察者订阅到某个主题时, 是否有保证观察者按照他们订阅的顺序被调用?订购顺序==单线程主题的观察顺序?
在Linqpad一个简单的测试似乎暗示是:
var observable = Observable.Return("foo");
var subject = new Subject<string>();
subject.Subscribe(_=>"Observer 1".Dump());
subject.Subscribe(_=>"Observer 2".Dump());
subject.Subscribe(_=>"Observer 3".Dump());
observable.Subscribe(subject);
// Observer 1
// Observer 2
// Observer 3
我明白,在多线程场景事情可能会变得相当棘手,所以我想问一下在单线程情况特定。主题订阅并在同一个线程上观察。
这是你绝对应该*不*依靠的东西,不管它是否可以确认的行为。如果您希望一个订阅者始终在另一个订阅者之后运行,则其中一个订阅者直接调用另一个订阅者,触发事件或以其他方式执行会导致后续订阅者运行的操作。 – Servy
相关:https://social.msdn.microsoft.com/Forums/en-US/ac721f91-4dbc-40b8-a2b2-19f00998239f/order-of-subscriptions-order-of-observations?forum=rx –