行为主体和结合最新 - 奇怪的行为

本文关键字:结合 最新 行为主体 | 更新日期: 2023-09-27 18:36:56

给定以下代码。

EventLoopScheduler scheduler = new EventLoopScheduler(ts => new Thread(ts));
BehaviorSubject<int> subject = new BehaviorSubject<int>(0);
subject
    .ObserveOn(scheduler)
    .CombineLatest(Observable.Interval(TimeSpan.FromSeconds(1), scheduler), (x, y) => x)                        
    .Subscribe(x => Debug.WriteLine(x));
subject.OnNext(1);

为什么要打印?

0
1
0
1
0
1
...

而不是:

0
1
1
1
1
1
...

行为主体和结合最新 - 奇怪的行为

首先,你的输出看起来很奇怪。我会说他们两个。我想输出应该是:

1
1
1
1
1

没有0.这是因为第一个间隔值将在 1 秒内生成 - 肯定在您调用subject.OnNext(1);之后

另一件事BehaviourSubject<int> - 它是英国版的BehaviorSubject(Of T):)吗?如果您有自己的BehaviourSubject实现,那么请用它扩展您的问题。