订阅顺序==单线程受试者的观察顺序

本文关键字:顺序 观察 受试者 单线程 | 更新日期: 2023-09-27 18:28:17

当我为一个主题订阅多个观察者时,有没有保证观察员按照认购顺序被召集?

Linqpad中的一个简单测试似乎意味着YES:

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

我知道,在多线程的场景中,事情可能会变得相当棘手,所以我想特别询问单线程的情况。该主题在同一个线程上被订阅和观察。

订阅顺序==单线程受试者的观察顺序

当我为一个主题订阅多个观察者时,是否可以保证这些观察者按照订阅的顺序被调用?

不,这是一个实现细节,目前恰好是正确的。