给定以下代码。
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
实现,那么请用它扩展您的问题。